私は、コンマでテキストファイルに区切られた特定のプロジェクトのビルドをトリガする必要があります。シェルスクリプトwhileループトリガービルド
ファイルの内容を分割してフォルダを抽出し、そのフォルダに移動するシェルスクリプトを作成しました。ナビゲーションが完了したら、ビルドをトリガします。これはすべてのプロジェクトパスで発生するはずです。ナビゲーション後にディレクトリにファイルをリストすると、下のスクリプトはうまく動作しますが、グラデルビルドを実行している間は、これは一度だけ実行されます。以下は
は、このスクリプトと私のシェルスクリプト
CWD="$(pwd)"
INPUT=deploy.txt
OLDIFS=$IFS
IFS=","
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read f1
do
echo "$f1 building...";
(
cd $f1;
gradle clean b u;
cd $CWD;
)
echo "Build over"
done < $INPUT
IFS=$OLDIFS
どれでも問題ありますか?助けてください
は、 '標準入力から読み込まgradle'ん。(あなたは絶対に
read
が$INPUT
から読み取ることになっていることをを知っているので、全くgradle
に干渉する理由はありませんあなたはとにかくこれを検討をしているかもしれませんか。)?もしそうなら、次の 'read f1'が実行される前に残りの入力ファイルを消費しているかもしれません。 – chepnerしかし、どちらのループも実行されていないか、2回目の繰り返しを印刷していません。それは、私がls -ltrをgradle buildの代わりに使うと印刷されます。 – jslearner07
これは、2回目の 'read f1'が実行されるため、読み込む入力がなくなり(' gradle'がすべてを読み込んだと仮定して)、最初の繰り返しの後にループが終了します。 'ls'は標準入力から読みません。 – chepner