在不同文件夹中连续执行两个命令

在不同文件夹中连续执行两个命令

我对 ubuntu 还很陌生,有一个小问题。

我有两个不同的命令,每个命令必须重复 4 次(因此总共执行 8 次)

这些CommandA.sh和CommandB.sh始终位于其工作目录中(每个工作目录都在准备文件夹中的文件以供处理)

那么从技术上来说我怎样才能编写一个 bash 命令:

  1. “进入”第一个工作目录

  2. 执行 CommandA.sh

  3. 等到 CommandA.sh 完成

  4. 执行 CommandB.sh

  5. 等待 CommandB.sh 完成

  6. “进入”第二个工作目录

  7. 重复步骤 2-5

  8. “进入”第三个工作目录

对最后一个工作文件夹进行冲洗并重复...

这是否“容易”做到,还是需要大量的脚本?

谢谢你的帮助 !

诚挚的 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。不只是名称,以确保脚本能够正确找到所有文件夹。

在使用脚本之前最好先备份每个文件夹。

相关内容