shell

变量

2019-01-12  本文已影响1人  时海观察者

自定义变量

$ cat variable_scope.sh
#!/bin/sh
echo $a
a=2
echo $a
$ chmod a+x variable_scope.sh
$ a=1
$ ./variable_scope.sh

2
$ echo $a
1

在派生的进程中,$a原本不存在,所以最开始打印的为空,在shell脚本执行完毕后进程结束,派生进程中的$a被销毁,也不会影响到原shell中的$a

$ a=1
$ export a
$ ./variable_scope.sh
1
2
$ echo $a
1

export a会在派生进程时,制作一个a的副本,所以$a最开始是存在的,但是在新进程中对变量的修改不会影响到原来的变量。

$ a=1
$ source ./variable_scope.sh
1
2
$ echo $a
2

source会使用本地的进程运行shell脚本,所以a在最开始是存在的,同时对a的修改也会影响到本地的a

内建变量

当运行cmd.sh arg1 arg2 arg3时,有一些内建的变量会自动设置

$?,上一个命令的退出值,正常退出为0

$$,当前运行shell的PID
$!,上一个后台运行的命令的PID

IFS,中间字段分隔符

#!/bin/sh
old_IFS="$IFS"
IFS=:
echo "Please input some data separated by colons(:) ..."
read x y z
IFS=$old_IFS
echo "x is $x y is $y z is $z"

默认值

$ # 变量为null
$ a=""
$ echo ${a:-loki}
loki
$ # 变量未定义
$ echo ${b:=maomi}
maomi
上一篇 下一篇

猜你喜欢

热点阅读