我有一个小的 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