Bash

“[(測試)語句中的參數太多”

  • February 2, 2015

這是我在 Linux 上的第一個“if-else”腳本。它給出了錯誤

[: too many arguments

程式碼:

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

如何糾正它。

數學bash必須在arithmetic context. 在您目前的實現中,您將“$n”、“%”和“2”作為 args 提供給[,這不會執行數學運算。這是一個執行數學 n 算術上下文的範例:

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

在上面的例子中,$(())shell 擴展了結果,然後再被[命令看到。您可以通過刪除對以下的呼叫來簡化此操作[

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

引用自:https://unix.stackexchange.com/questions/182470