什麼是 /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

相關內容