簡體   English   中英

這個shell腳本有什么錯誤

[英]What is the mistake in this shell script

我寫了下面的代碼..

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:標記2:找不到

./install:53:標記3:找不到

./install:53:標記4:找不到

誰能說是什么問題?

提前致謝!!

嘗試

flag1=$?

注意缺少空間。

http://tldp.org/LDP/abs/html/varassignment.html


而且正如kev所述,您的if語句無效。

 installFunction if [ $? -ne 0 ] then echo "installation failure" exit fi 

應該管用。 強制性鏈接: http : //tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html

return語句也是錯誤的: return $((flag1 | flag2 | flag3 | flag4))

變量分配不正確,請man bash並在PARAMETERS上閱讀。 該部分應詳細說明。

您的if語句語法不正確,請在bash手冊中閱讀“ 復合命令”

如果我了解您的if語句的語義,您想檢查函數調用中的返回碼並驗證其是否不為零? 您應該調用函數,然后使用$?獲得返回代碼$? 因此,您需要在此處進行一些小的修改。

最后但並非最不重要的一點是,您可以通過運行命令sh -n script.sh來檢查Shell腳本是否存在語法錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM