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