我正在编写一个简单的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脚本,因此我不需要手动执行此操作。