スクリプト:[! -d dir]意味

スクリプト:[! -d dir]意味
if [ ! -d /home/dir ]; then

   mkdir /home/dir

fi

ある日、友人と私はクラスでこの質問を受けました。私たちは両方とも異なる答えをしました。しかし、私はその友人に私が正しいかもしれないことを証明したかったのです。

彼は、「/home/dirディレクトリが存在しない場合にのみ作成する」と言います。

いいえと言いました。 "/home/dir ディレクトリを削除して再作成する"

誰が正しいですか? …それとも私たち全員が間違っていますか?

答え1

あなたの友人はほぼ正しいです。スクリプトは、/home/dirまだディレクトリでない場合にのみ生成されます。 (他の場合はmkdir実行されますが失敗します。)

[テストを紹介します! -d /home/dir。ここに存在し、ディレクトリであることを-d /home/dir確認し、それを無効にします。すべてが/に含まれることは、まだディレクトリでない場合は実行中であることを意味します。/home/dir!ifthen/home/dirmkdir /home/dir

具体的には、mkdirすべてをもう少し簡潔に書いてください。

mkdir -p /home/dir

答え2

あなたの友人は正しいです。 「そうでなければディレクトリです」のように

しかし、彼に条件全体をキャンセルし、ただ書くことができると言ってください。mkdir -p /home/dir

関連情報