我对 ubuntu 还很陌生,有一个小问题。
我有两个不同的命令,每个命令必须重复 4 次(因此总共执行 8 次)
这些CommandA.sh和CommandB.sh始终位于其工作目录中(每个工作目录都在准备文件夹中的文件以供处理)
那么从技术上来说我怎样才能编写一个 bash 命令:
“进入”第一个工作目录
执行 CommandA.sh
等到 CommandA.sh 完成
执行 CommandB.sh
等待 CommandB.sh 完成
“进入”第二个工作目录
重复步骤 2-5
“进入”第三个工作目录
对最后一个工作文件夹进行冲洗并重复...
这是否“容易”做到,还是需要大量的脚本?
谢谢你的帮助 !
诚挚的 Max
答案1
#!/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
如果需要超过 4 个文件夹,可以按照相同的模式在数组中添加更多文件夹(文件夹[x]="")。
警告:这是一个非常简单的 bash 脚本,不执行任何错误检查。您需要自行决定是否在命令A和命令B。如果发生错误并且没有得到处理,它将在数组中指定的所有文件夹中反复发生。
警告 2:您应该在每个文件夹名称中使用完整路径,例如/home/用户/文件夹1。不只是名称,以确保脚本能够正确找到所有文件夹。
在使用脚本之前最好先备份每个文件夹。