0

因为 bash 向我返回 != 无效,但它是一个基本运算符。

我尝试在三个表达式 for 循环中使用它

for (( c=1; ${!c}!=""; c++ )) do

4

2 回答 2

1

您不能在 a 中进行字符串比较,(())因为它只是算术。

你可以做的是这样的事情,其中​​字符串检查是增加计数器变量后的单独测试:

c=0
while (( c += 1 )) && [[ -n ${!c} ]]; do
    echo "$c ${!c}"
done
于 2019-02-07T15:43:01.590 回答
1

你可以,但这并不是检查是否有空参数的常用方法。

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

请注意我们如何将诊断信息打印到标准错误,并注意在消息中包含生成诊断信息的脚本名称。

在实践中你很少需要检查空参数,但这也许是一个学习练习。

于 2019-02-07T14:59:25.160 回答