“[(测试)语句中的参数太多”

“[(测试)语句中的参数太多”

这是我在 Linux 上的第一个“if-else”脚本。它给出了错误
[: 争论太多

代码:

n=0
if [ $n % 2 -eq 0 ]
then
  echo "even number"
fi 

如何纠正。

答案1

中的数学运算bash必须在 中执行arithmetic context。在当前的实现中,您将“$n”、“%”和“2”作为参数提供给[,这不执行数学运算。这是一个执行数学运算上下文的示例:

if [ "$((n % 2))" -eq 0 ]

在上面的示例中,结果$(())在命令看到之前由 shell 展开[。您可以通过删除对以下内容的调用来简化此操作[

if (( (n % 2) == 0 ))

相关内容