Bash でタプルをループすることは可能ですか?
たとえば、次のことが機能するとしたら素晴らしいでしょう:
for (i,j) in ((c,3), (e,5)); do echo "$i and $j"; done
何らかの方法でタプルをループできる回避策はありますか?
ベストアンサー1
$ for i in c,3 e,5; do IFS=","; set -- $i; echo $1 and $2; done
c and 3
e and 5
この使用法についてset
(from man builtins
):
オプション処理後に残った引数は位置パラメータの値として扱われ、順番に$1、$2、... $nに割り当てられます。
はIFS=","
フィールド区切り文字を設定するので、すべてがと$i
に正しく分割されます。$1
$2
経由このブログ。
@SLACEDIAMOND が提案したより正確なバージョン:
$ OLDIFS=$IFS; IFS=','; for i in c,3 e,5; do set -- $i; echo $1 and $2; done; IFS=$OLDIFS
c and 3
e and 5