Me gustaría usar una variable como valor de índice para referirme a las variables posicionales pasadas al script, por ejemplo:
x=101 y=201 z=301 foo(){ i=0; (( i+=1 )); # i=1 echo "${$i}"; # parameter 1 (( i+=1 )); # i=2 echo "${$i}"; # parameter 2 (( i+=1 )); # i=3 echo "${$i}"; # parameter 3 } foo xyzproducción:
101 201 301Las matrices y los bucles no ayudarán en este caso, necesito un método simple para incrementar una variable int y usar este valor como índice para recuperar un parámetro de método pasado.
¿Consejo?
Creo que necesitas una expansión variable indirecta aquí:
x=101 y=201 z=301 foo() { local i local v for ((i=1; i<=3; i++ )); do v="${!i}" # will get x, y, z echo "${!v}" # will get values of $x, $y, $z done }Entonces llámalo como:
foo xyz 101 201 301