这里介绍shell脚本中关于变量的使用方式及常用的echo、exit命令
变量使用
创建如下的shell脚本文件Var.sh。其是一个关于shell脚本中变量使用的Demo。其中,我们需要在脚本的第一行指定解释器信息。用于告知系统该脚本使用什么解释器进行执行。语法为 #!解释器的路径信息
1 |
|
执行Var.sh脚本也很简单,首先为其添加执行权限x。然后在脚本文件所在的目录下,通过 ./Var.sh 即可执行。需要注意的是,不能通过Var.sh来执行。原因很简单,因为Linux系统会去PATH路径下寻找Var.sh。而显然脚本文件所在的目录并不在PATH路径中。故通过Var.sh执行会提示找不到命令。而使用 ./Var.sh 的方式进行执行,则告诉系统就在当前目录下寻找
echo 命令
该命令可以打印内容。对于内容而言,无论是否使用双引号进行包裹均可以
1 | # 打印内容 |
打印引号
在对内容使用双引号进行包裹的前提下,如果期望打印双引号,则需要添加转义符反斜杠\进行转义;如果期望打印单引号,可直接打印无需转义
1 | # 对打印内容中的双引号添加反斜杠进行转义 |
在对内容未使用引号进行包裹的前提下,如果期望打印双引号、单引号,都需要添加转义符反斜杠\进行转义
1 | # 对打印内容中的双引号、单引号,都要添加反斜杠进行转义 |
打印变量
打印变量时,如果只是期望打印变量名本身,而不是打印变量的值。同样可在$前添加转义符反斜杠\实现
1 | echo "The value of Var PWD is $PWD." |
换行
echo命令默认会在末尾添加换行符。可通过-n选项取消末尾的换行符
1 | echo "Hello," ; echo "Aaron." ; echo "Welcome to ..." |
exit命令
Linux中专门提供了一个变量 $? 用来保存最后一个已执行命令的退出状态码。其值的范围为[0,255]。具体地,对于成功结束的命令而言,其退出状态码为0;对于错误结束的命令,其退出状态码非0
通过exit命令,则可以在退出当前shell进程/当前shell脚本的同时,返回指定的退出状态码。下图,我们先启动了一个子Shell,然后再执行exit命令。否则当前Shell退出后,终端的窗口会被关闭。无法观察到输出结果
1 | # 以 指定退出状态码 退出 当前shell进程 / 当前shell脚本 |
对于shell脚本而言,其退出状态码是脚本中的最后一个命令的退出状态码。故我们可以在shell脚本中使用exit命令。此时就可以在退出脚本同时,返回指定的退出状态码。需要注意的是如果指定的退出状态码值大于255的话,则最终返回的值是shell对其按256取模后的结果。例如上面脚本指定的退出返回码是996,经取模后返回 996%256 = 228
Note
事实上,我们在执行脚本时,还可以选择将脚本文件作为参数传递给解释器的方式进行运行。此时,不仅无需在脚本文件第一行指定解释器信息(写了也没用),而且也无需给该脚本添加x执行权限。下图中,我们直接在脚本文件第一行指定了错误的解释器信息,结果也不会影响它的运行。进一步证明了其不会被使用
参考文献
- Linux命令行与shell脚本编程大全·第4版 Richard Blum、Christine Bresnahan著