如果不存在 *.txt 文件,for 循环(f in *.txt)将抛出错误

如果不存在 *.txt 文件,for 循环(f in *.txt)将抛出错误

我有一个小的 bash 脚本,看起来像这样:

#!/bin/sh
for f in ./*.txt
do
 f=$(basename $f)
 echo "Processing $f"
 scp somewhere
 mv $f done/`basename $f`
done

这工作得很好,但只要没有剩余文件,它就会抛出这个错误:*.txt: No such file or directory 我想知道为什么它会进入循环以及我该如何做到这一点(可能没有新的?)

答案1

如果没有*.txt文件,则字符串保持原样不展开,并进入循环。要防止这种情况,请设置该nullglob选项。

shopt -s nullglob

相关内容