2011-10-27 72 views
1

我想寫一個簡單的shell腳本,打印出第一個參數,如果有的話,並打印「無」,如果沒有。該腳本被稱爲test.sh麻煩傳遞參數到簡單的ShellScript(命令未找到)

if [$1 = ""] 
    then 
     echo "none" 
    else 
     echo $1 
    fi 

如果我運行沒有參數的腳本一切正常。但是,如果我運行這個命令source test.sh -test,我得到這個錯誤-bash: [test: command not found之前的腳本繼續和正確回波測試。我究竟做錯了什麼?

回答

7

你需要前/後位「[」,「]」字符,即

if [ "$1" = "" ] ; then 
#---^---------^ here 
    echo "none" 
else 
    echo "$1" 
fi 

而你需要你參考(真正的所有引用)用引號包裹到$ 1如上編輯。

之後你解決這個問題,你可能還需要給出一個相對路徑到腳本,即

source ./test.sh -test 
#------^^--- there 

當你得到一個shell錯誤消息有你在這裏,它幾乎總是有利於打開外殼在引起問題的行之前調試set -vx,或者非常靠近腳本的頂部。然後,您可以看到正在執行的每行代碼塊,以及shell正在使用的變量值。

我希望這會有所幫助。

+0

在關閉'''之前還需要一個空格 –

+0

@glennjackman:謝謝,謝謝! – shellter

+0

通過這個腳本,我得到了-bash:[:=:一元運算符預計 – Spencer