У меня есть массив docker контейнеров, arr = (testfoler1 testfoler2 testfoler3 testfoler1)
я знаю, что testfoler1 имеет файл notify.txt в местоположении / tmp /, т.е. /tmp/notify.txt. testfoler2 и testfoler3, пусты.
Теперь мое требование: как только этот файл будет найден, я остановлю контейнер и удалю этот контейнер из arr.
Так что поток должен быть таким:
шаг 1 : /tmp/notify.txt находится в testfoler1, и новый массив будет иметь вид: arr = (testfoler2 testfoler3 testfoler1)
шаг 2: он будет искать testfolder2 и testfolder3, но, поскольку ни один файл не существует, никаких действий нет
шаг 3: когда он достигает testfoler1, который находится во втором индексе, он найдет файл notify.txt и должен удалить его из массива.
И мой последний ожидаемый массив будет (testfoler2 testfoler3), и l oop должен продолжать работать до тех пор, пока файл не будет найден или я не остановлю сценарий.
Мой сценарий успешно выполняется, пока не будет повторен (testfoler1 testfoler2 testfoler3) , Проблема начинается, когда мой массив становится (testfoler2 testfoler3 testfoler1). Здесь он отлично работает для testfolder2 и testfolder3, так как файл не найден, но когда он достигает testfolder1, вместо удаления testfolder1 он удаляет testfolder2, а массив становится (testfoler3 testfoler1) вместо (testfoler2 testfoler3), а затем продолжает выполнять итерацию, а затем удаляет testfolder3, а затем testfoler1.Однако он должен был удалить testfolder1, потому что он имел файл и должен был продолжать работать для testfolder2 и testfolder3.
Пожалуйста, укажите код, который я пробовал с:
FILE=/tmp/notify.txt
arr=(testfoler1 testfoler2 testfoler3 testfoler1)
sizeOfArray="${#arr[@]}"
index=0
while [ ! $sizeOfArray -eq 0 ]
do
sizeOfArray="${#arr[@]}"
test=`sudo docker container diff ${arr[index]}|grep $FILE|wc -l`
if [ $test = 1 ]; then
echo "notify.txt is found in container ${arr[index]}"
##Get array length
sizeOfArray="${#arr[@]}"
sudo docker stop ${arr[index]}
sudo docker container ls -a|grep ${arr[index]}
###################Issue seems to be here
unset arr[${arr[index]}]
arr=( "${arr[@]}" )
##################Need some help on code above
echo "When file is FOUND, name of all array elements ${arr[*]}"
echo "Size of array after deletion *********** "${#arr[@]}""
sizeOfArray="${#arr[@]}"
index=$((index + 1))
if [ $index -gt $sizeOfArray ] ; then
index=0
fi
continue
else
echo "notify file is not created in ${arr[index]}"
echo "When file is NOT found, name of all array elements ${arr[*]}"
index=$((index + 1))
if [ $index -ge $sizeOfArray ]; then
echo "Index value is greater/equal size of suites"
index=0
fi
fi
done