set -u
当脚本中遇到未定义的变量时,默认是忽略。
有时候这并不是开发者想要的。
假如有未定义的变量,应该报错,并且终止脚本继续运行。
set -u
就可以办到
示例
#!/usr/bin/env bash
set -u
echo $a
echo shark
执行报错
$ bash set.sh
set.sh: line 13: a: unbound variable
set -x
这个调试脚本是使用,可以看到每个执行的命令,和执行命令后的输出结果。
#!/usr/bin/env bash
set -x
echo shark
和 bash -x set.sh
相同的含义。
set -e
脚本中有任何命令的返回值是非零,脚本则停止继续执行。
对管道的命令无效,比如:
foo | echo shark
foo 不是 shell 中的命令,执行会报错,但是其后面有个管道,最终管道后的 echo 命令执行成功了,这种情况下 脚本会继续执行。
set -o pipefail
如果设置,如果管道中的所有命令都成功退出,则返回零。 默认情况下禁用此选项
心得
set -u
脚本遇到未定义的变量是,默认是忽略。
而
set -u
在脚本中设置之后,若有未定义的变量,则会报错,并终止脚本继续运行
该参数可以写在脚本中
set -x调试命令
该命令可以在执行脚本时加入,此时会显示脚本执行的顺序,相当于java的debug过程。
写在脚本中和bash -x script.sh
相同的含义