web-dev-qa-db-ja.com

「if [-e $ name]」はどういう意味ですか? $ nameはディレクトリへのパスです

の中に if [ -e $name ]、条件チェックとは-e
$nameは、ディレクトリへのパスの変数です。

5
user277585

ターゲットが存在する場合、-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/[で機能することを確認します。

8
Patrick