У меня есть требование инициировать сборку для некоторых конкретных проектов, которые разделены в текстовом файле запятой.shell script while loop trigger build
Я написал сценарий оболочки, чтобы разделить содержимое файла, извлечь папку и перейти к этой папке. После того, как навигация будет выполнена, вызовите сборку, и это должно произойти для всех путей проекта. Нижеприведенный скрипт отлично работает, если я перечисляю файлы в каталоге после навигации, но при выполнении градиентной сборки это выполняется только один раз.
Ниже мой сценарий оболочки
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 f1'. – chepner
Но ни один цикл не выполняет или не печатает вторую итерацию. Это печать, если я использую ls -ltr вместо построения градиента. – jslearner07
Это потому, что второй раз 'read f1' выполняется, больше нет ввода для чтения (при условии, что' gradle' прочитал все это), и поэтому цикл выходит после первой итерации. 'ls' does * not * читается со стандартного ввода. – chepner