我已經看了一個小時了,但沒有弄清楚問題是什麼。 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 ]
也可以在變數擴展上使用雙引號以避免分詞和路徑名擴展,但在這種情況下並不是絕對必要的$#
。