变量

 

例子:

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

 

posted @ 2019-06-18 11:02  Jary霸  阅读(194)  评论(0编辑  收藏  举报