因为bash返回我!=是无效的,但它是一个基本的运算符。
我尝试在循环的三个表达式中使用它
for (( c=1; ${!c}!=""; c++ ))
do
你可以,但这不是检查是否有空参数的常用方法。
for((i=1; i<=$#; ++i)); do
[[ "${!i}" ]] || echo "$0: Argument $i is empty" >&2
done
如果您不关心索引,只需循环访问实际参数就更简单了。
for arg in "$@"; do
[[ "$arg" ]] || echo "$0: Empty argument" >&2
done
请注意我们如何打印诊断为标准错误,并注意在消息中包含生成诊断的脚本的名称。
在实践中,你很少需要检查空的论点,但也许这是一个学习练习。
您不能在(())
中进行字符串比较,因为它只是算术。
你可以做的是这样的,其中字符串检查是递增计数器 var 后的单独测试:
c=0
while (( c += 1 )) && [[ -n ${!c} ]]; do
echo "$c ${!c}"
done