変数を使用する mkdir

変数を使用する mkdir

スクリプトで変数を使用してディレクトリを作成する際に問題があります。前任者:

read user
mkdir $user{01..10}

興味深いことに、次のように動作します。

read user
mkdir {01..10}$user

この問題を解決する方法はありますか?それとも何か抜けましたか?

ありがとう

答え1

中括弧の拡張は、内の変数の拡張の前に発生しますbash。これはコマンドです

mkdir $user{01..10}

まず、次に展開してください。

mkdir $user01 $user02 (etc.)

これらの変数は存在しないため、最終コマンドの実行は次のようになります。

mkdir

オペランドはありません。

この問題を解決するには、次を使用します。

mkdir "$user"{01..10}

答え2

適切な変数拡張と環境変数の解析には、括弧を使用する必要があります。

read user
mkdir ${user}{01..10}

二重引用符は最もエレガントな方法ではありませんが、それでも機能します。

read user
mkdir "$user"{01..10}

関連情報