簡單的 if/else 不起作用

簡單的 if/else 不起作用

我已經看了一個小時了,但沒有弄清楚問題是什麼。 else 語句因為某些原因而不起作用。

#!/bin/bash
if [ $#=3 ]
then
echo $*
else
echo "error" 1>&2
exit
fi

答案1

問題出在這一行:

if [ $#=3 ]

由於 周圍沒有空格=,因此它必然會執行以下操作:

if [ -n $#=3 ]

test 始終為真=3,因此else永遠不會被觸發。

您需要在周圍使用空格=

if [ $# = 3 ]

也可以在變數擴展上使用雙引號以避免分詞和路徑名擴展,但在這種情況下並不是絕對必要的$#

相關內容