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


26

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

実行可能です。私はそれが何をするのか、それをどのように使うのか分からない。

$ file / usr / bin / [
/ usr / bin / [:ELF 32ビットLSB実行可能ファイル、Intel 80386、バージョン1(SYSV)、動的リンク(共有ライブラリを使用)、GNU / Linux 2.6.15用、削除済み

実行しようとすると、デフォルトで行拡張に組み込まれたbashになっていると思います。実際にファイルを実行する代わりに。

$ "/ usr / bin / ["
/ usr / bin / [:missing ] ']' $ /usr/bin/\[
/usr/bin/[: missing



2
man [OS X上で動作します
ダニエル・ベック

回答:


33

これはcommandと同等ですtest。(を参照してくださいinfo test。)通常、次のような条件式のスクリプトで使用します。

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

条件を囲むには、閉じ括弧が必要です。(まあ、コードをもっと見やすくするために必要なようです。他の実用的な理由を知っている人はいますか?)


3
[ある両方組み込みシェルと同一の(または類似の)用途に外部プログラム。bashでは、実行時[またはtest組み込みを呼び出しています。
-grawity

オプションである場合、特定の状況では構文があいまいになるため、必須です。
ランダム832

20

これは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

2
使い方の良い例。"もしは/ usr /ビン/ ["
nelaaro
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.