循环中的Bash循环不会为每次迭代运行命令?

时间:2018-04-02 21:01:53

标签: bash

我正在编写一个简单的bash脚本,我循环遍历文件夹,然后在这些文件夹中我遍历子文件夹并执行单独的命令。 回应子文件夹的名称似乎有效,但试图执行一个名为summary.sh的命令(它只是总结了随机的东西,并不重要)它只对第一个子文件夹Folder_A.1执行。

下面是我的脚本和示例输出。这里还有我的文件夹的树形式:

Current Directory:

Folder_A
   |
   ----Folder_A.1
   ----Folder_A.2
   ----Folder_A.3
Folder_B
   |
   ----Folder_B.1
   ----Folder_B.2
   ----Folder_B.3
Folder_C
  |
   ----Folder_C.1
   ----Folder_C.2
   ----Folder_C.3

我的bash脚本:

my_pwd=$PWD

for dirname in $my_pwd/Folder*
do
    folder=$(basename "$dirname")
    echo $folder
done

因此,如果我只是单独运行第一个循环,则终端中的输出如下:

Folder_A
Folder_B
Folder_C

然后我包含第二个循环因为我真的想得到子文件夹名称:

my_pwd=$PWD

for dirname in $my_pwd/Folder*
do
    folder=$(basename "$dirname")
    for subfolders in $my_pwd/$folder/*
    do
       subfoldname=$(basename "$subfolders")
       #echo $subfoldname
       ./summary.sh $subfoldname
    done
done

但是,只执行一个子文件夹,即Folder_A.1。这很奇怪,如果我保留echo $ subfoldname并删除summary.sh行,我得到这个输出:

Folder_A.1
Folder_A.2
Folder_A.3
etc.

这很好,因为这意味着我正在访问我想要的每个子文件夹。通常我会cd进一个文件夹(即Folder_A)并在终端中运行summary.sh,如下所示:

\Folder_A> summary.sh Folder_A.1

我重复每个子文件夹。然后我cd到下一个主文件夹(即Folder_B),并为每个子文件夹执行summary.sh。因此,我试图将其优化为bash脚本,因此我不需要手动执行此操作。

0 个答案:

没有答案