set命令作用主要是显示系统中已经存在的shell变量,以及设置shell变量的新变量值。使用set更改shell特性时,符号”+”和”-“的作用分别是打开和关闭指定的模式。set命令不能够定义新的shell变量。如果要定义新的变量,可以使用declare命令以
变量名=值
的格式进行定义即可。
常用参数
-u 参数
执行时遇到未定义的变量 bash
默认忽略,设置 -u
参数当执行使用到未定义的变量时显示错误信息。
1 | !/bin/bash |
1 | $ bash set.sh |
设置 -u
参数
1 | !/bin/bash |
1 | $ bash set.sh |
等效命令
1 | $ set -o nounset |
-x 参数
脚本运行时,打印出输出很多时候不能确定是由哪条命令输出的,设置 -x
参数在执行命令后会先显示该命令及参数,然后打印输出,有利于调试。
1 | !/bin/bash |
1 | $ bash set.sh |
设置 -x
参数
1 | !/bin/bash |
1 | $ bash set.sh |
等效命令
1 | $ set -o xtrace |
-e 参数
1 |
|
1 | $ bash set.sh |
以上脚本虽然在第三行 t
命令不存在,但是报错后继续向下执行。为错误的叠加有时候需要发生错误时推出脚本。此时设置 -e
参数。
1 | !/bin/bash |
1 | $ bash set.sh |
此时在报错之后直接退出不会向下执行。
也可以在给一个代码段开启 -e
参数,执行完改代码段后再取出改参数。
1 | !/bin/bash |
等效命令
1 | $ set -o errexit |
其他参数
1 | -a:标示已修改的变量,以供输出至环境变量。 |