GNUパラレル配列パラメータの組み合わせ?

GNUパラレル配列パラメータの組み合わせ?

bash機能があります。

println(){echo "$1" "$2" "$3"}

そして

export -f println

printlnを実行するためにGNUパラレルを使用したいと思います。コマンドは次の配列から入力を受け取る必要があります。

a1=(a b c) 

a2=(x y)

a3=(z1 z2)

以下を出力する必要があります。

   a x a3
   a y a3
   b x a3
   b y a3
   c x a3
   c y a3

どのコマンドがこれを実行できますか?私は次のようなコマンドを期待しました。

 parallel ... println ... a1 ... a2 .... a3

ありがとうございます!

答え1

:::ちょうど真ん中に入れてください:

$ parallel println ::: "${a1[@]}" ::: "${a2[@]}" ::: "${a3[@]}"
a y z1
a x z1
a y z2
a x z2
b x z2
b x z1
b y z2
b y z1
c x z2
c x z1
c y z1
c y z2

は間違っています。println(){echo "$1" "$2" "$3"}でなければなりませんprintln(){ echo "$1" "$2" "$3"; }

答え2

申請可能サポート拡張Bashで変数を使用するIFS

(IFS=,; eval printf %s "{${a1[*]}}\ {${a2[*]}}\ {${a3[*]}}\$'\n'")
a x z1
a x z2
a y z1
a y z2
b x z1
b x z2
b y z1
b y z2
c x z1
c x z2
c y z1
c y z2

(...)- 変数に値が返されるのを防ぐためにサブシェルで実行しますIFS

またはあなたの例と同じです。

(IFS=,; eval printf %s "{${a1[*]}}\ {${a2[*]}}\ a3\$'\n'")
a x a3
a y a3
b x a3
b y a3
c x a3
c y a3

関連情報