私は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
これは、コマンドtest
と同等です。 (見る info test
。)通常は、次のような条件式のスクリプトで使用します。
if [ -n "$1" ]; then
echo $1
fi
条件を囲むには閉じ括弧が必要です。 (まあ、それはコードで見栄えを良くするためだけに必要なようです。誰かがそれの他の実際的な理由を知っていますか?)
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