如何使用test -f $PREFIX/lib/python3.6/some_file
以及路径中的通配符查看文件是否存在?
这有效:
test -f $PREFIX/lib/python*/some_file
这不起作用(我在这里做错了什么?):
{{1}}
如果文件不存在,我需要非零退出代码。
答案 0 :(得分:1)
您需要迭代文件,因为test -f
仅适用于单个文件。我会使用shell函数:
#!/bin/sh
# test-f.sh
test_f() {
for fname; do
if test -f "$fname"; then
return 0
fi
done
}
test_f "$@"
然后测试运行可能
$ sh -x test-f.sh
$ sh -x test-f.sh doesnotexist*
$ sh -x test-f.sh *
答案 1 :(得分:1)
将通配符展开为数组,然后检查第一个元素:
f=($PREFIX/lib/python*/some_file)
if [[ -f "${f[0]}" ]]; then echo "found"; else echo "not found"; fi
unset f
答案 2 :(得分:0)
来自test
的手册页:
-f file True if file exists and is a regular file
表示test -f <arg>
期望arg
成为单个文件。如果路径中的通配符导致多个文件,则会引发错误。
使用通配符时尝试迭代:)