*.txt
当目录中实际有文件时,以下 bash 代码片段效果很好。
for txt in *.txt
do
echo "loading data from $txt"
done
当没有时,文字*.txt
将作为 $txt 进入循环(不好)。
我如何更改此代码以便在没有*.txt
文件时do ... done
跳过该块?
答案1
答案2
如果您使用的是 bash(不是 brand-X shell),并且不必担心 nullglob 会更改/破坏其他任何内容,则最好使用 nullglob 选项(@kfmfe04 的答案)。否则,您可以使用这个(稍微混乱一点的)选项:
for txt in *.txt
do
[ -e "$txt" ] || continue
echo "loading data from $txt"
done
这会默默跳过不存在的文件(如果没有匹配项,主要是“*.txt”,但也可能是在生成for
列表和循环到达它们之间删除的文件...)