シェルスクリプトの変数にスペースを含む単語をフルネームに割り当てる方法は? [コピー]

シェルスクリプトの変数にスペースを含む単語をフルネームに割り当てる方法は? [コピー]

著者名を含む目次を作成する必要があります。一人で簡単です。私は簡単にできる

mkdir "Mario Luis Garcia"

これにより、「Mario Luis Garcia」というディレクトリが作成されます。

ただし、シェルスクリプトを使用して大規模な操作を実行しようとすると失敗します。

for i in "Mario Luis Garcia" "etc.";
    do 
        mkdir $i
    done;

これにより、2つではなく4つの別々のディレクトリが作成されます。引用したテキストを囲むために{}を使ってみました。()動作しません。

どうすればいいですか?

ベストアンサー1

変数拡張を二重引用符で引用する必要があります。

mkdir "$i"

(一重引用符を使用すると、'$i'名前がディレクトリとして生成されます$i

名前がで始まる場合は、最後のオプションパラメータの後に追加して、他のすべてのパラメータがオプションではないことを示す必要があり-ます--。つまり、この場合、そのパラメータはディレクトリ名です。

mkdir -- "$i"

または、次のオプション-v(verbose)を使用します。

mkdir -v -- "$i"

おすすめ記事