我正在努力改进这个nasty old script。我发现一个未定义的变量错误需要修复,所以我添加了set -u
来捕获任何类似的错误。
因为这段代码,我得到了一个未定义的变量错误“$1”
if [ -z "$1" ]; then
process "$command"
只是想知道是否有争论。(不打算将空字符串作为第一个参数传递时的行为。如果我们也能解决这个问题的话就不会有问题了)。
使用
set -u
运行时,检查是否有参数的好方法是什么?如果我们将“$1”替换为“$@”,上面的代码将不起作用,因为当有多个参数时“$@”会以特殊方式展开。
最佳答案
$#
包含参数的数目,因此可以在访问它们之前对$1
、$2
等进行测试。
if (( $# == 0 )); then
# no arguments
else
# have arguments
fi;
关于bash - `set -u`(nounset)vs检查我是否有参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43707685/