![GNUパラレル配列パラメータの組み合わせ?](https://linux33.com/image/193398/GNU%E3%83%91%E3%83%A9%E3%83%AC%E3%83%AB%E9%85%8D%E5%88%97%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%AE%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%EF%BC%9F.png)
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