並列処理を使用して複数のファイルをディレクトリにコピーする

並列処理を使用して複数のファイルをディレクトリにコピーする

次のスクリプトを使用して、複数のファイルをフォルダにコピーします。

{ 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

関連情報