次のスクリプトを使用して、複数のファイルをフォルダにコピーします。
{ echo $BASE1; echo $BASE2; echo $BASE3; } | parallel cp -a {} $DEST
中かっこ拡張でecho $BASEを使用する方法はありますか?
私の言葉はこれです:
{ echo $BASE{1..3} } | parallel cp -a {} $DEST
答え1
配列を使用できます。
BASES[0]=...
BASES[1]=...
BASES[2]=...
# or BASES+=(...)
# or BASES=(foo bar baz)
echo "${BASES[@]}" | parallel cp -a {} $DEST
より安全にするには(特に変数にスペースと改行文字がある場合)、次のような方がより安定している必要があります。
printf "%s\0" "${BASES[@]}" | parallel -0 cp -a {} "$DEST"
注:配列はPOSIXにはありませんが、現在のバージョンのbashとkshで動作します。
答え2
printf
代わりにを使用して、echo
必要な改行文字を取得できます。
env printf "%s\n" $BASE{1..3} | parallel cp -a {} $DEST