我正在 BASH 中进行验证
if [ !( ( -e $f ) || ($# -lt 2) || ( -d $f ) ) ]; then
exit 0
fi
我正在尝试查看该文件是否存在,或者它是否是一个目录,或者是否通过终端传递了足够的参数。我可以这样做还是必须以其他方式完成?
看起来你在这里至少有一些问题。
您的测试语法将需要更现代的双[[
命令而不是传统的单[
命令。
你fi
最后错过了一个。(我为你编辑了这个,感谢修改它的人。)
你可能会觉得你的测试颠倒了,但我不确定。这取决于脚本的其余部分是什么样的。
我从你的问题中收集到你想拒绝任何不是普通文件的东西。在这种情况下,如果使用 -f 而不是 -e,则对目录的测试是多余的。
if [[ ! -f "$f" || $# -lt 2 ]]; then
exit 0
fi
顺便说一句,如果这是一个错误退出,你应该退出 0 以外的东西 - 0 在大多数情况下表示成功;出口1会更好。