Bash中括弧拡張のコード分割

Bash中括弧拡張のコード分割

中かっこ拡張を使用すると、bashで改行に関連する愚かな問題があります。

たとえば、次のようなものがあります。

echo {a,b,c,d}

では、コードを複数行に分割したいと思います。

echo {a,b, \
     c,d}

しかし、うまくいきません。中かっこ拡張を使用してコードを分割する正確で美しい方法は何ですか?ありがとう

ベストアンサー1

コメントによると、中かっこ拡張は、ファイル名のリストを保存するために使用されます。

これはシェル配列でも行うことができ、より簡潔です。

files=(
    file1
    file2
    file{A..K}
    some/other/file
    some/directory/*.txt
    'file with spaces in its name'
)

2番目のエントリのファイル名globは、一致するすべての名前に展開されます。同様に、中括弧の拡張により、3番目の項目はfileA、、、fileB...に拡張されます。fileK

次に、配列を繰り返してファイルをコピーします。

for file in "${files[@]}"; do
    cp "$file" some/destination
done

または(ファイルが数千個未満の場合)

cp "${files[@]}" some/destination

上記の引用はよく考えられ、重要な内容です。そうしないと、有効なパス名をすべてサポートできない可能性があります。

おすすめ記事