我正在查看 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