我正在努力改进这个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/

10-16 12:52