2017-03-21 9 views
2

ディレクトリが存在するかどうかを確認する非常に単純なbashスクリプトを作成していますが、存在しない場合は作成します。Bashスクリプト - ファイルディレクトリが存在しません

しかし、どのディレクトリに置いても、それを見つけることはできません!

私が間違っていることを教えてください。

ここに私のスクリプトです。ここで

#!/bin/bash 
$1="/media/student/System" 

if [ ! -d $1 ] 
then 

    mkdir $1 
fi 

は、コマンドラインエラーです:

./test1.sh: line 2: =/media/student/System: No such file or directory 
+0

あなたのスクリプトは 'if'テストの前に止まります。あなたの割り当ては間違っています。 – Aserre

+0

なぜ '$ 1'を使うのですか?これは特別な変数です:http://stackoverflow.com/questions/29258603/what-do-0-1-2-mean-in-shell-script – HerrSerker

+1

あなたがしたいことをする正しい方法は次のようになります: 'my_var = "/ media/student/System"; [! -d $ my_var] .... ' – Aserre

答えて

4

は試してみてください。この

#!/bin/bash 

directory="/media/student/System" 

if [ ! -d "${directory}" ] 
then 
    mkdir "${directory}" 
fi 

またはMKDIR(01​​)

#!/bin/bash 

directory="/media/student/System" 
mkdir -p "${directory}" 
+1

このハードコード化された文字列ではこの例では問題はありませんが、常に変数を引用する方が良いでしょう –

+0

@ EricRenoufありがとう。私は私の答えを編集しました。 – HerrSerker

1

parent引数にしても、短いですバッシュ_というアンダースコア以外の数字や記号で変数を開始することはできません。あなたのコードで$1を使用しましたが、"/media/student/System"$1に割り当てようとしていましたが、おそらくあなたはbashの引数の使い方を誤解していると思います。私は、これはあなたがあれば、

#!/bin/bash 
directory="$1" # you have to quote to avoid white space splitting 

if [[ ! -d "${directory}" ]];then 
    mkdir "$directory" 
fi 

実行コードの一部は、「/メディア/学生/システムは、」ディレクトリがあるかどうかを確認することであるん何この

$ chmod +x create_dir.sh 
$ ./create_dir.sh "/media/student/System" 

のようなスクリプトを望むものだと思いますそれはディレクトリを作成するディレクトリではありません

関連する問題