2012-03-12 86 views
0

我寫了下面的代碼錯誤..什麼是在這個shell腳本

installFunction(){ 

    perl Makefile.PL 
    flag1 = $? 

    make  
    flag2 = $? 

    make install 
    flag3 = $? 

    make test 
    flag4 = $? 

    cd .. 


    return $flag1 || $flag2 || $flag3 || $flag4 
} 
if(installFunction != 0) 
    then 
     echo "installation failure" 
     exit 
fi 

但是當我運行的代碼,即時得到以下錯誤

./INSTALL:53:標誌1:未找到

./INSTALL:53:FLAG 2:找不到

./INSTALL:53:Flag3相同的:未找到

./INSTALL:53:Flag4的:沒有發現

誰能說的問題是什麼?

在此先感謝!

+0

無法讀取任何東西,請重新格式化。 – ulidtko 2012-03-12 05:46:27

+0

'flag1 = $?''''周圍沒有空格='' – kev 2012-03-12 05:47:37

+1

'如果'語句無效。 – kev 2012-03-12 05:51:01

回答

1

變量分配不正確,man bash參數讀取。該部分應詳細解釋。

你的if語句語法不正確,在bash的手冊,閱讀複方如果我理解命令

你的if語句語義,你想從你的函數調用來檢查返回代碼,並驗證其是否不零?您應該調用您的函數,然後使用$?獲取返回碼。因此,你需要做一些小改動。

最後但並非最不重要的,你可以通過運行命令sh -n script.sh

2

return語句檢查語法錯誤,你的shell腳本也是錯誤的:return $((flag1 | flag2 | flag3 | flag4))