我有一個需求來觸發某些特定項目的構建,這些項目是用逗號分隔的文本文件。shell腳本while循環觸發器構建
我寫了一個shell腳本來拆分文件的內容,提取文件夾並導航到該文件夾。一旦導航完成,觸發構建,這應該發生在所有項目路徑上。下面的腳本工作正常,如果我在導航後列出目錄中的文件,但在執行gradle構建時,它只執行一次。
下面是我的shell腳本
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'從標準輸入讀取?如果是這樣,它可能會在下一次執行「讀取f1」之前佔用輸入文件的其餘部分。 – chepner
但是循環都不執行或打印第二次迭代。這是打印,如果我做ls -ltr而不是gradle build。 – jslearner07
這是因爲第二次讀取f1執行,沒有更多的輸入來讀取(假設'gradle'已經讀取了所有的),所以循環在第一次迭代之後退出。 'ls'不會*從標準輸入中讀取。 – chepner