Bash 无法识别文件测试运算符
Posted
技术标签:
【中文标题】Bash 无法识别文件测试运算符【英文标题】:Bash won't recognize file test operators 【发布时间】:2016-01-22 05:09:59 【问题描述】:我在 Raspberry Pi 2 上运行 Raspbian-Wheezy(基于 Debian)3.18。当我尝试在 bash 中使用文件测试运算符时,我收到 command not found 错误。 例如:
>> -d ./bin
产量
bash: -d: command not found
对于我尝试过的所有文件测试运算符(-d、-e、-f 等),在终端和 shell 脚本中都会发生这种情况。据我所知,这些命令似乎应该内置到 bash 中。知道我哪里出错了吗?
【问题讨论】:
那些不是 shell 的操作符。他们是test
/[
的运营商。 (例如test -d ./bin
或[ -d ./bin ]
。
【参考方案1】:
文件测试运算符仅在test
命令(test
或[
...]
或[[
...]]
)的上下文中被识别。这适用于 -z
或 -n
等其他运算符,以及您可能希望在条件表达式中使用的大多数其他测试:
$ test -d bin
$
注意没有输出;它只是将最后一个状态变量$?
设置为 0 如果为真,如果为假则为 1。您必须使用if
或其他东西才能使用该值:
if test -d ./bin; then
echo "./bin is a directory"
else
echo "./bin is not a directory"
fi
【讨论】:
如果您需要通过变量动态传递文件测试运算符,则必须使用if test -d
而不是if [[ -d
。以上是关于Bash 无法识别文件测试运算符的主要内容,如果未能解决你的问题,请参考以下文章