Bashでタプルをループする 質問する

Bashでタプルをループする 質問する

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

おすすめ記事