什么是/ usr / bin / [,如何使用它?


26

我正在查看coreutils,发现它是coreutils中包含的文件之一: /usr/bin/[。什么是[和它有什么作用?

它是可执行文件。我只是不知道它的作用或用法。

$ file / usr / bin / [
/ usr / bin / [:ELF 32位LSB可执行文件,Intel 80386,版本1(SYSV),动态链接(使用共享库),用于GNU / Linux 2.6.15,已剥离

当我尝试运行它时,我认为它默认为行扩展内置的bash。而不是实际运行文件。

$“ / usr / bin / [”
/ usr / bin / [:缺少]']' $ /usr/bin/\[
/usr/bin/[: missing



2
man [适用于OS X.
丹尼尔·贝克

Answers:


33

等效于命令test。(请参阅参考资料info test。)通常,您可以在脚本中使用条件表达式,例如:

if [ -n "$1" ]; then
    echo $1
fi

需要使用括号将条件条件括起来。(好吧,看起来只是为了使代码更好看才是必需的。有人知道它的其他实际原因吗?)


3
请注意,[两个内置的外壳和具有相同(或类似)使用一个外部程序。在bash中,当您运行[test正在调用内置函数时。
grawity 2011年

这是必需的,因为如果它是可选的,则在某些情况下语法会模棱两可。
Random832

20

它等效于test命令。

代替

if /usr/bin/test -z "$VAR"
then
    echo VAR not set
fi

您可以使用:

if /usr/bin/[ -z "$VAR" ]
then
    echo VAR not set
fi

它也可以在循环中使用:

i=0
while [ $i -lt 10 ]
do
   echo $i
   ((i++))
done

您还可以像这样在单层中使用它们:

[ -z "$VAR" ] && echo VAR not set && exit

[ -f foo.txt ] && cat foo.txt

2
如何使用它的好例子。“如果/ usr / bin / [”
nelaaro 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.