中かっこ拡張を使用すると、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
上記の引用はよく考えられ、重要な内容です。そうしないと、有効なパス名をすべてサポートできない可能性があります。