Я действительно новичок в ubuntu, и у меня есть небольшой вопрос.
У меня есть две разные команды, которые нужно повторять по 4 раза каждую (так что всего 8 выполнений )
Эти CommandA.sh и CommandB.sh всегда находятся в своем рабочем каталоге (каждый рабочий каталог подготавливает файлы в папке для обработки)
Итак, как я могу написать команду bash, технически:
«переходит» в первый рабочий каталог
выполняет CommandA.sh
ожидает завершения CommandA.sh
выполняет CommandB.sh
ожидает завершения CommandB.sh
«переходит» в второй рабочий каталог
повторяет шаги 2-5
«переходит» в третий рабочий каталог
промывает и повторяет для последней рабочей папки ....
Это «легко» выполнимо или действительно это требует большого количества скриптов?
Спасибо за вашу помощь!
С уважением Макс
#!/bin/bash
# We define an array (folders) that contains the folder names
folders[0]="first folder name"
folders[1]="second folder name"
folders[2]="third folder name"
folders[3]="fourth folder name"
for oneFolder in "${folders[@]}"; do
cd "$oneFolder" # changes to specified folder
commandA && commandB # Executes commandA and if it's successful, executes commandB
# The loop continues until the last folder in the array is reached.
done
echo
Если вам нужно больше четырех папок, вы можете добавить больше в массив, следуя тому же шаблону (folders[x]="").
ВНИМАНИЕ: Это очень простой bash-скрипт, который не выполняет проверку ошибок. Вы можете включить необходимые проверки в команду A и командуB. Если возникает ошибка и она не обрабатывается, она будет возникать снова и снова во всех папках, указанных в массиве.
ПРЕДУПРЕЖДЕНИЕ 2: Вы должны использовать полные пути в имени каждой папки, например /home/user/folder1. Не только имя, чтобы убедиться, что скрипт правильно найдет все папки.
Прежде чем использовать скрипт, было бы целесообразно сделать резервную копию каждой папки.