は、私はこの
#!/bin/bash
DIR="test_dir/";
if [! -d "$DIR"]; then
# If it doesn't create it
mkdir $DIR
fi
のようなコードを持っているしかし、なぜそれは私にこれを与えた実行-d
は、私はこの
#!/bin/bash
DIR="test_dir/";
if [! -d "$DIR"]; then
# If it doesn't create it
mkdir $DIR
fi
のようなコードを持っているしかし、なぜそれは私にこれを与えた実行-d
[と!]の間にスペースを追加します。そして前に]。
#!/bin/bash
DIR="test_dir/";
if [ ! -d "$DIR" ]; then
# If it doesn't create it
mkdir $DIR
fi
それはあなたの変数を引用するのも良い考えです:
mkdir "$DIR"
いくつかのスペースを追加します。
if [ ! -d "$DIR" ]; then
# ^ ^
あなたは、単に言ってしようとする可能性があり:
test -d "${dir}" || mkdir "${dir}"
これは、ディレクトリを作成するifそれは存在しません。
あるいは、もっと簡単です: 'mkdir -p" $ DIR "'(質問のように大文字の名前を使います)。これにより、パス上に必要なすべてのディレクトリが作成されますが、ディレクトリがすでに存在する場合は成功します。 –
@JonathanLefflerうわー、 'mkdir -p foo'それ自体は何の害も及ぼしません。 – devnull
名前 '['はコマンドの名前であり、ランダムな句読点ではありません。 'cat/etc/passwd'の' cat'と '/ etc/passwd'の間にスペースが必要なので、' ['(コマンド名)と'! '(引数の1つ)の間にスペースが必要です。 。同様に、最後の引数は ']'でなければなりません。この要件は、シェルに 'test'(別名' [')が組み込まれておらず、唯一の' test'コマンドが '/ bin/test 'だった古代の歴史(UNIXの第7版、1978年以前のもの) 'とその(ハード)リンク'/bin/[' –