Is it possible to loop over tuples in bash?
As an example, it would be great if the following worked:
for (i,j) in ((c,3), (e,5)); do echo "$i and $j"; done
Is there a workaround that somehow lets me loop over tuples?
$ for i in c,3 e,5; do IFS=","; set -- $i; echo $1 and $2; done
c and 3
e and 5
About this use of set
(from man builtins
):
Any arguments remaining after option processing are treated as values for the positional parameters and are assigned, in order, to $1, $2, ... $n
The IFS=","
sets the field separator so every $i
gets segmented into $1
and $2
correctly.
Via this blog.
Edit: more correct version, as suggested by @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