在我的bash腳本中,我有一個函數爲以後的主函數的條件返回0或1(true或false)。在bash腳本中遇到「一元運算符預期」
function1() {
if [[ "${1}" =~ "^ ...some regexp... $" ]] ; then
return 1
else
return 0
fi
}
然後在我的主要功能:
main() {
for arg in ${@} ; do
if [ function1 ${arg} ] ; then
...
elif [ ... ] ; then
...
fi
done
}
然而,當我運行此腳本,它總是給我一個錯誤味精「[:功能1:一元運算符預期」
誰能幫助我好嗎?
請注意,至少在bash版本4中,不應該引用正則表達式:這樣做會強制實現簡單的字符串匹配 - [記錄在此](http://www.gnu.org/software/bash/manual/bashref.html#index-g_t_005b_005b-57)。另外,你應該在引用中使用'for $ for $',或者簡單地使用'for arg;做...' –
你應該把你的正則表達式放在一個變量中。 'pattern ='^ ...一些正則表達式... $';如果[[$ 1 =〜$ pattern]]'。請注意,在雙方括號內,沒有必要引用變量,正如glenn所說,不應引用正則表達式(變量)。 –