我想在 bash 中检查一个目录是否有文件。 我的代码在这里。
for d in {,/usr/local}/etc/bash_completion.d ~/.bash/completion.d
do
[ -d "$d" ] && [ -n "${d}/*" ] &&
for f in $d/*; do
[ -f "$f" ] && echo "$f" && . "$f"
done
done
问题是“~/.bash/completion.d”没有文件。 因此,$d/* 被视为简单字符串“~/.bash/completion.d/*”,而不是文件名扩展结果的空字符串。 作为该代码的结果,bash 尝试运行
. "~/.bash/completion.d/*"
当然,它会生成错误消息。
有人能帮帮我吗?
最佳答案
如果你设置了 nullglob bash 选项,通过
shopt -s nullglob
然后 globbing 将丢弃不匹配任何文件的模式。
关于bash - 如何在 bash 中测试文件名扩展结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1310997/