我無法在以下腳本中查找語法錯誤。在bash中傳遞參數
的bash test.sh貓
#!/bin/bash
if [ $1 = "cat" ]; then
echo "valid"
else
echo "invalid"
fi
我無法在以下腳本中查找語法錯誤。在bash中傳遞參數
的bash test.sh貓
#!/bin/bash
if [ $1 = "cat" ]; then
echo "valid"
else
echo "invalid"
fi
如果你不給參數,$1
將評估的空白空間,你可能看到line 2: [: =: unary operator expected
。要修復,添加引號$1
:
#!/bin/bash
if [ "$1" = "cat" ]; then
echo "valid"
else
echo "invalid"
fi
這樣,如果你不帶參數它將仍然比較空字符串調用。一般來說,你應該總是在變量擴展周圍加上引號,否則如果變量爲空(如你剛剛看到的)或者變量中有空格,你可能會看到意外的錯誤。
Thx的提示,但這不是真正的問題..看我上面的回覆 – user2650277
@ user2650277以供將來參考,如果您遇到錯誤,您應該將錯誤消息添加到問題中,否則您可能會得到與標記(例如我的)不同的答案。 – SethMMorton
的ARG $1
沒有價值。你可以做這樣的事情。
if [ -z $1 ]
then
echo "you forgot to give me an arg."
exit 1
fi
if [ $1 = "cat" ]; then
echo "valid"
else
echo "invalid"
fi
你也可以這樣做:
if [ $# -ne 1 ]; then
echo "Usage: ./script.sh <arg1>"
exit 1
fi
爲什麼你覺得有一個語法錯誤? –
我得到的語法錯誤:意外的文件結束。問題是我需要將test.sh轉換爲Unix格式 – user2650277