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

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

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

它是一个可执行文件。我只是不知道它能做什么或如何使用它。

$ file /usr/bin/[  
/usr/bin/[: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared  libs), for GNU/Linux 2.6.15, stripped  

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

$ "/usr/bin/["
/usr/bin/[: missing ‘]’
$ /usr/bin/\[
/usr/bin/[: missing ‘]’

答案1

它相当于命令test。(请参阅info test。)通常,您可以在脚本中的条件表达式中使用它,例如:

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

需要用右括号括住条件。(嗯,看起来它只是为了让代码看起来更美观。有人知道它还有其他实际原因吗?)

答案2

它相当于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

相关内容