web-dev-qa-db-ja.com

/ usr / bin / [とは何ですか?どのように使用しますか?

私はcoreutilsを調べていましたが、これがcoreutilsの一部として含まれているファイルの1つであることがわかりました:/usr/bin/[[とは何ですか?それは何をしますか?

実行可能ファイルです。私はそれが何をするのか、それをどのように使うのか分かりません。

$ファイル/ 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
] 'がありません

26
nelaaro

これは、コマンドtestと同等です。 (見る info test。)通常は、次のような条件式のスクリプトで使用します。

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

条件を囲むには閉じ括弧が必要です。 (まあ、それはコードで見栄えを良くするためだけに必要なようです。誰かがそれの他の実際的な理由を知っていますか?)

33
Rajish

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
20
dogbane