1
我在寫一個截斷表的腳本。問題在於腳本無限循環。如何在用於截斷表的shell腳本中打破循環?
./n_input
包含在腳本中使用的環境變量。
#!/bin/ksh
INPUT_FILE=./n_input
if [ ! -e $INPUT_FILE ];
then
echo "Error: Input file require"
exit 1
fi
source $INPUT_FILE
while read Table
do
TABLE="$DSTN_DATABASE.dbo.$Table"
echo "Table : $TABLE"
QUERY="truncate table $TABLE"
echo $QUERY > ./tmp_file
sqlcmd -m 1 -U $DSTN_USER -P $DSTN_PASSWORD -D -S $DSTN_SERVER -m1 -i ./tmp_file
RET_VALUE=$?
if [ $RET_VALUE -ne 0 ]
then
echo "Error $TABLE"
fi
done < $TABLE_LIST
exit 0
我該如何打破循環?我試圖從腳本中刪除sqlcmd
並驗證它正在工作。它按預期工作。觀察到與sqlcmd -Q
選項相同的行爲。
$TABLE_LIST
文件只包含一個表名。
感謝您的編輯和回答...問題與sqlcmd ... sqlcmd等待輸入,同時進入無限期看..解決問題通過傳遞EOF到sqlcmd作爲'sqlcmd -U $ DSTN_USER -P $ DSTN_PASSWORD -D -S $ DSTN_SERVER << - EOF \ n $ QUERY \ n去\ n EOF' ' – Pravin
@Pravin,「_sqlcmd等待輸入,並進入無限_」 - 這就是我的意思。但是,我想,追加';'或';去;'應該足夠了。但是,文檔建議不要在查詢中使用'go'終止符。所以一個';'應該解決這個問題。你有沒有試圖追加一個分號? –