为了加深自己的影响,所以抄了一边,具体请看ABS_Guide_cn.pdf
4.1 变量替换
"$" 变量替换操作符
只有在变量被声明,赋值,unset 或 exported 或者是在变量代表一个 signal 的时候,变量才会是以本来的面目出现在脚本里.变量在被赋值的时候,可能需要使用"=",read 状态或者是在循环的头部.在""中还是会发生变量替换,这被叫做部分引用,或叫弱引用.而在''中就不会发生变量替换,这叫做全引用,也叫强引用.注意:$var 与${var}的区别,不加{},在某些上下文将引起错误,为了安全,使用 2.
4.2 变量赋值
"=" 赋值操作符(前后都不能有空白)
不要与-eq 混淆,那个是 test,并不是赋值
4.3 Bash 变量是不分类型的
不像其他程序语言一样,Bash 并不对变量区分"类型".本质上,Bash 变量都是字符串.但是依赖于上下文,Bash 也允许比较操作和算术操作.决定这些的关键因素就是,变量中的值是否只有数字.
4.4 特殊的变量类型
"local variables: 这种变量只有在代码块或者是函数中才可见(具体见 23.2 和 23 章)
"environmental variables" 这种变量将改变用户接口和 shell 的行为.
在一般的上下文中,每个进程都有自己的环境,就是一组保持进程可能引用的信息的变量.这种情况下,shell 于一个一般进程是相同的.每次当 shell 启动时,它都将创建自己的环境变量.更新或者添加新的环境变量,将导致 shell 更新它的环境,同时也会影响所有继承自这个环境的所有子进程(由这个命令导致的).
注意:分配给环境变量的空间是受限的.创建太多的环境变量将引起空间溢出,这会引起问题.
bash$ eval "`seq 10000 | sed -e 's/.*/export var&=ZZZZZZZZZZZZZZ/'`"
bash$ du
bash: /usr/bin/du: Argument list too long
如果一个脚本设置了环境变量,需要 export 它,来通知本脚本的环境,这是 export命令的功能,关于 export 命令,具体见 11 章.
脚本只能对它产生的子进程 export 变量.一个从命令行被调用的脚本 export 的变量,将不能影响调用这个脚本的那个命令行 shell 的环境.
"positional parameters: 就是从命令行中传进来的参数,$0, $1, $2, $3...$0 就是脚本文件的名字,$1 是第一个参数,$2 为第 2 个...,参见[1](有$0 的说明),$9以后就需要打括号了,如${10},${11},${12}...两个值得注意的变量$*和$@(第 9 章有具体的描述),表示所有的位置参数.