BASH 脚本中的 `continue`

BASH 脚本中的 `continue`

我试图在我的音乐收藏中查找不包含任何 mp3 文件的文件夹(有些文件夹只有专辑封面或播放列表等)。所以我在 shell 脚本中写了类似的东西。

#!/bin/bash
for DIR in *
do
        [[ -d "${DIR}" ]] || continue
        cd "${DIR}"

        ls *.mp3 > /dev/null 2>&1
        if [[ "$?" != "0" ]]
        then
                echo $DIR has no MP3 files!
                continue
        fi

        cd ..
done

然而,尽管有很多文件夹需要检查,但此脚本在退出之前只检查了第一个文件夹...这是为什么?就好像continue脚本内部if完全跳出了循环一样。

答案1

继续声明内部如果阻止是问题的根源:

如果没有找到 MP3 文件,cd ..则不会执行,并且[[ -d "${DIR}" ]]所有剩余目录的条件很可能都会失败。

相关内容