sh: : unknown operand
沒有行數,沒有關鍵字元,真是不知道問題在哪!在重開了不知道幾次的機器之後,終於讓我找到問題是什麼!
#Find thd path while SD card plugin
if [ -e /mnt/sd ]; then
mmc=`ls /mnt/sd`
fi
if [ ${mmc} != "" ]; then
#Do something
fi
也不知道是不是因為對 shell script 不熟的關係,上面的判斷我真的是看不出來有什麼問題。原來會造成 sh: : unknown operand 的原因就在 ${mmc} != "" 這一行裡。當我找到是在這裡時,老實說,我還不了解為什麼。我試著在 Linux PC 平台上執行類似的程式碼,如下:
#!/bin/sh
test=""
if [ ${test} != "" ]; then
echo "Pass"
else
echo "Fail"
fi
沒想到還真的有問題!它出現了這樣的訊息
[: 9: !=: unexpected operator
Fail
比起我使用的 Embedded System,倒是多了數字和符號,在 Linux PC 找問題點容易多了。這裡是因為判斷空字串出了問題,${test} 必須用雙引號括起來才行,像這樣 "${test}" != ""。改完了之後,再執行一次就不會再出現 [: 9: !=: unexpected operator 這個訊息了。
另外也有人用別的方式寫,使用 -z ${test} 的方式來判斷 ${test} 是否為空字串。再回頭看看 Embedded System 上的 shell script,同樣地,就只要在 ${mmc_folder} 加上雙引號,就不會出現 sh: : unknown operand 這個訊息了。
沒有留言:
張貼留言