の中に if [ -e $name ]
、条件チェックとは-e
?$name
は、ディレクトリへのパスの変数です。
ターゲットが存在する場合、-e
はtrueを返します。ファイル、パイプ、特別なデバイスなど、何でもかまいません。何かが存在し、-e
がfalseを返す唯一の条件は、壊れたシンボリックリンクの場合です。
例えば:
$ ln -s foo bar
$ [ -e foo ]; echo $?
1
$ touch bar
$ [ -e foo ]; echo $?
0
Bashでは、help test
を実行して、使用できるテストオプションを確認できます。
[
は通常、シェルの一部です。 bashでは、オプションと動作はbashによって定義されます。また、test
の同義語でもあります。 bashでは、help test
を実行して、サポートされているすべてのオプションを確認できます。[
とtest
の本当の違いは、[
が引数の後に]
を必要とするのに対し、test
は必要としないことです。 。それ以外は同じように機能し、[ -e foo ]
はtest -e foo
と同等です。
/usr/bin/[
が組み込まれていないシェル用の[
もあります。ただし、これに関するmanページはありません。しかし、/usr/bin/test
もあり、私のシステムにはオプションをカバーするman test
があります。私はテストしていませんが、/usr/bin/test
でサポートされているすべてのオプションが/usr/bin/[
で機能することを確認します。