LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 914|回复: 4

请教javalee

[复制链接]
发表于 2003-8-21 16:53:24 | 显示全部楼层 |阅读模式
在阁下的脚本里常看到这样的变量
#(VAR),有中括号,有大括号,为什么要加括号呢,有什么用呢?谢谢了。
发表于 2003-8-21 19:13:37 | 显示全部楼层

回复: 请教javalee

最初由 chg1226 发表
在阁下的脚本里常看到这样的变量
#(VAR),有中括号,有大括号,为什么要加括号呢,有什么用呢?谢谢了。

各种括号的用途不同,如:
$var=$(ls)        <=圆括号的常见用法,是将ls的输出赋值给变量var
$echo $var        <=显示这个变量var的内容
$array=(a b c)    <=这个圆括号则表示用于建立数组
$echo ${array
  • } <=这里的大括号和$组合表示显示数组内容,方括号
  • 则表示是显示数组中的所有元素
    $echo ${array[0]} <=显示数组中的第一个元素,(数组的下标以0开始的)
    $a=123
    $echo ${a:-456}   <=这样的用法是用于变量表达式和修饰符
    123
    ...
    总之,他们的用法很多,不同的shell对符号的定义也不尽相同,但是基本相似!这些都是我们学习shell所必备的基础.
  •  楼主| 发表于 2003-8-22 09:40:07 | 显示全部楼层
    谢谢,,不过还是有点疑问
    $var=$(ls) 和var=`ls`的用法完全相同吗,结果好像是完全相同的.
    还有就是建立数组,
    用set 和shift来建立和引用,和阁下说的哪个要好些呢,
    再次表示感谢!!!
    发表于 2003-8-22 10:49:42 | 显示全部楼层
    1,var=$(...)是最新的写法var=`...`比较陈旧的写法,功能基本相同,但是从阅读方便度上来说$(...)要比`...`好.尤其当有多个嵌套的替换的时候.
    2,数组的问题跟你用的shell版本有关,如KSH是用set -A array a b c来建立,而BASH比较直接,array=(a b c),在历遍数组中,shift是个隐含的操作,这要取决你的喜好.
     楼主| 发表于 2003-8-25 08:52:10 | 显示全部楼层
    多谢javalee,
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表