2017-05-31 84 views
0

我編寫了一個腳本來執行控件。在腳本中,我正在檢查錯誤。如果錯誤= 200,則在五分鐘後再次重新運行該控件。無論錯誤如何,腳本都已經存在。以下是我的腳本。如何在shell腳本中使用循環語句

. $HOME/infogix.env 
#!/bin/bash 
SCRIPT_NAME=$(basename $0) 
INFOGIX=info/IA83/Client/bin/runcp.sh 

check_for_errors() 
{ 
if [ "${1}" -ne "0" ]; then 
exit 1 
fi 
} 
$RUNCP_HOME -c $1 IA -entity NGN_MKTG_CNCT_HIST_FILECNT_CE -point FILE_EXTRACT_CP 
check_for_errors $? 

echo "Processing Complete for ${SCRIPT_NAME}" 
exit 0 
#EOF 
+1

作爲題外話 - 全大寫的名稱[POSIX指定](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html)(見第四段),用於與變量意思是操作系統或shell,而小寫字母的名字是保留給應用程序使用的。請記住,設置任何shell變量都會覆蓋任何類似命名的環境變量,因此命名約定適用於這兩個類。 –

+1

shebang *必須是腳本的第一行,因爲它有任何作用。 – chepner

回答

0

您實際上並未在腳本中使用循環。

#!/bin/bash 

. "$HOME/infogix.env" 
script_name="$(basename "$0")" 
info_gix="info/IA83/Client/bin/runcp.sh" 

function run_runcp() 
{ 
    $RUNCP_HOME -c "$1" IA -entity NGN_MKTG_CNCT_HIST_FILECNT_CE -point FILE_EXTRACT_CP; 
    if [ "$?" -eq 200 ]; then 
     return 0 
    else 
     return 1 
    fi 
} 

# If RUNCP_HOME returns 0, then the loop will stop. Otherwise, it will sleep for 5 minutes then continue 
while run_runcp "$1"; do 
    sleep 300 # Five minutes 
done 

echo "Processing Complete for ${script_name}" 
exit 0 
+2

我建議在您來這裏時嘗試解決一些其他問題(即缺少引號)。這個答案仍然存在一些http://shellcheck.net/會捕獲的錯誤。 –

+0

@Coder_Man: - 只有當error_core是200時,循環才能工作,因爲控制器也會給出錯誤代碼12和16。這個腳本將如何檢查200.請讓我知道。是 – Midhun

+0

@Midhun:修改後的腳本應該做的伎倆。 –