变量
例子:
fun(){
local a=123
}
此时在外面访问不到a,因为它是局部变量。但是如果定义一个本地变量,可以直接在bash里面定义也能在函数里面定义,而且函数里面也能修改,外面也能修改。
先vi a,在里面敲:
echo $#:打印参数个数
echo $*:打印参数列表
echo $@:打印参数列表
echo ${1}}:打印第一个参数
echo ${2}:....
在外面. a 12 3 4 5 6 6 a,即当前bash读取a然后跟上一堆参数:1 2 3 4 5 6,看看效果
$?:取出上一个命令的退出状,0:成功,其他是失败
用export可以导出变量,这样子进程也能用父进程的变量。
下面验证export定义的变量是否是同时感知的(父子一方修改另一方会不会感知)
先定义vi sh03.sh:
随后执行:bash sh03.sh & : 让子进程在后台跑起来
同时父进程echo sxt看看有没有被同步修改。
结论:导出变量中,父子双方自己修改自己的,不会影响到对方。原理:fork()创建子进程时把父进程的东西复制了一次。当然可以采用写时复制技术,即2个进程指向同一个共享变量,只有当任何一方需要修改变量时,才会再复制一份私人的给自己。
注意:若一个变量从未出现过,则echo $((as)),结果为1