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 无法识别文件测试运算符的主要内容,如果未能解决你的问题,请参考以下文章

xargs 无法识别 bash 别名

Bash 脚本无法识别命令行参数? [复制]

解决 Windows 环境 Git Bash 里无法识别 Composer 命令的问题

为啥我的 bash 脚本无法识别 date 命令中的变量?

Git bash 无法识别“rev”命令

使用 pip 安装鼻子,但 bash 无法识别 mac 上的命令