2017-09-15 8 views
0

シェルスクリプトを作成しました。 forループは2回実行されます。これを修正する方法がわかりません。forループが2回実行され、修正方法がわからない

問題の解決にお手伝いをしてくれる人はいますか?

コード:安全shellscriptingの

#!/bin/sh 
mkdir -p C:/Users/spatro/Desktop/attachment_backup 
feed=`sqlplus -s <<EOF 
$1/$2 
whenever sqlerror exit sql.sqlcode rollback 
SET SERVEROUTPUT ON 
SET VERIFY OFF 
SET FEEDBACK OFF 
SET HEADING OFF 
SET PAGESIZE 0 
select attach_sub_folder from DC_Purge_Files_log where entity_type = 'Attachment' and delete_complete = 'N'; 
/
exit 
EOF` 
for counter in $feed 
do 
mkdir -p C:/Users/spatro/Desktop/attachment_backup/$counter 
echo "Sub folder created "$counter 
done 

答えて

0

ルール番号1:Always use quotes

あなたのループ、一度実行していたコマンド置換(バッククォートでもの)と$フィード変数が引用されていました。それが立てば、彼らはトラブルを求めています!具体的には、単語分割とグロブ展開。

あなたは、いくつかのツールをご希望の場合:

Shellcheckは、あなたの質問に答えるだろう、とNaziquoteはそれを修正するでしょう(thisの質問を参照)。

0

あなたはループのため、一度だけ実行 行う$飼料にカウンタ用

を "完了" の前にbreak文を使用したい場合は ます。mkdir -p C:/ユーザ/ spatro /デスクトップ/ attachment_backup/$カウンタ echo "サブフォルダが作成されました" $ counter 休憩 done