0

我有一个脚本test.sh

OUTPUT_FILE="$1"; shift || { echo "require arg1: output file path"; exit 1; }

但是当我./test.sh不带参数执行时,它不输出require arg1: output file path输出是shift: nothing to shift

谁能告诉我为什么?

我的灰烬环境:Busybox Android 2.2~4.4

4

1 回答 1

1

即使我无法重现您的问题,原因似乎很清楚:当没有指定足够的参数时,您的班次不会引发错误作为退出值,继续执行脚本,否则会默默地忽略该条件。相反,它会输出自己的错误,并终止进一步的脚本执行。

而不是依靠 shift 来产生退出值 - 你的似乎没有 - 你可以考虑测试命令行是否有任何要转移的参数:

echo "${#@}"

显示剩余(尚未移动)命令行的长度。如果它是 0,你想要你的警告信息。请注意,当 bash 产生命令行参数的数量时,busybox ash 计算命令行中剩余的字符数。

或者。测试 $1 是否为空:

[ -z "$1" ] && echo "no args"
于 2014-07-21T06:45:46.327 回答