シェルスクリプトでmkdirを使用して一括ディレクトリを作成する

シェルスクリプトでmkdirを使用して一括ディレクトリを作成する

シェルスクリプトを介して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

これにより、すべてが一緒に生成されます。もっと複雑なものが必要な場合はお知らせください。

関連情報