我试图在我的音乐收藏中查找不包含任何 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}" ]]
所有剩余目录的条件很可能都会失败。