2014-02-09 155 views
0

我無法在以下腳本中查找語法錯誤。在bash中傳遞參數

的bash test.sh貓

#!/bin/bash 
if [ $1 = "cat" ]; then 
echo "valid" 
else 
echo "invalid" 
fi 
+0

爲什麼你覺得有一個語法錯誤? –

+0

我得到的語法錯誤:意外的文件結束。問題是我需要將test.sh轉換爲Unix格式 – user2650277

回答

2

如果你不給參數,$1將評估的空白空間,你可能看到line 2: [: =: unary operator expected。要修復,添加引號$1

#!/bin/bash 
if [ "$1" = "cat" ]; then 
echo "valid" 
else 
echo "invalid" 
fi 

這樣,如果你不帶參數它將仍然比較空字符串調用。一般來說,你應該總是在變量擴展周圍加上引號,否則如果變量爲空(如你剛剛看到的)或者變量中有空格,你可能會看到意外的錯誤。

+0

Thx的提示,但這不是真正的問題..看我上面的回覆 – user2650277

+2

@ user2650277以供將來參考,如果您遇到錯誤,您應該將錯誤消息添加到問題中,否則您可能會得到與標記(例如我的)不同的答案。 – SethMMorton

0

的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 
0

你也可以這樣做:

if [ $# -ne 1 ]; then 
    echo "Usage: ./script.sh <arg1>" 
    exit 1 
fi