2015-04-19 72 views
2

我想創建一個if語句,使用test命令檢查變量「name」是否包含「Scott Pearce」。錯誤在if語句中使用測試命令

#!/bin/bash 

name="Scott Pearce" 
if test $name == "Scott Pearce"; 
then 
     echo "Yes" 
else 
     echo "No" 
fi 

當我運行該腳本,我得到一個錯誤說:

./script1: line 5: test: too many arguments 

任何想法,我做錯了什麼?

回答

5
if test "$name" = "Scott Pearce"; 

您需要引用變量,否則當shell擴展它,test不會得到的觀點的權利數量,因爲你的變量包含空格。

另外,用於測試的字符串相等運算符是=而不是==

+0

感謝您的更正@Mat。 –

4

如果你真的想測試contains,然後選擇

慶典

if [[ $name == *"Scott Pearce"* ]]; then ...  

之一POSIX

case "$name" in 
    *"Scott Pearce"*) echo Hi Scott ;; 
    *) echo Begone stranger ;; 
esac 

==運營商在bash的[[命令是模式匹配運營商。

+0

感謝您的回答格倫。我想用測試來學習使用這個命令。 –