シェルスクリプトを介してmkdirを使用して一括ディレクトリを作成しようとしています。以下のスクリプトは次のとおりです。
#!bin/bash
mkdir /tmp/report*/testfolder*/testdoank
実行するとエラーが発生します。
-bash: ./makefolder.sh: bin/bash: bad interpreter: No such file or directory
何が問題なの?
答え1
ハッシュバンの間違ったパスによってエラーが発生したほか、mkdir
コマンド自体にも問題がありました。
globはリストにのみ使用できることを覚えておいてください。既存のしたがって、表示されるすべてのエントリはmkdir /tmp/foo*
既存のディレクトリを引数として渡しますmkdir
。/tmp/foo1
存在する場合は、そのディレクトリに渡され、既に存在するとmkdir
文句を言います。もし/tmp/foo2
いいえ存在する、そうだろういいえに渡され、mkdir
生成されません。新しいディレクトリを作成するには、追加の作業を実行する必要があります。
どのディレクトリを作成するかはわかりませんが、一致testdoank
する各ディレクトリの下にディレクトリを作成すると仮定すると、/tmp/report*/testfolder*
次のことができます。
for dir in /tmp/report*/testfolder*; do
mkdir "$dir"/testdoank
done
答え2
質問の元の形式のため、シェルステートメントに「#」文字がありません。ただし、実際のエラーはbashパスに/が欠落しているために発生します。
これはbashスクリプトでシェルを決定する正しい方法です。
#!/bin/bash
答え3
シェルスクリプトは#!
単にではなくで始める必要があります!
。
答え4
使用
mkdir -p 親ディレクトリ 1/サブディレクトリ 1 par2/サブディレクトリ 2/孫ディレクトリ 2
これにより、すべてが一緒に生成されます。もっと複雑なものが必要な場合はお知らせください。