Ejemplo :
VARIABLE1="/foo/bar"
VARIABLE2="/some/other/path"
# etc you don't know how many variables there is, maybe 3 maybe 30.
# Then :
randomfunction $VARIABLE1 $VARIABLE2 #... <- How do I replace this to something that would include every variable starting with name "VARIABLE"
EDITAR
Como hay algún malentendido, déjame decirlo de otra manera:
¿Cómo hago?
VAR1="foo"
VAR2="bar"
VAR3="job"
siendo generado como:
"foo bar job"
sin saber el número de VAR, tal vez también exista VAR4, tal vez VAR5, etc.
Respuesta1
Si ejecuta el set
comando sin ningún argumento, generará todas las variables y funciones que se configuraron para la sesión, con eso en mente es solo cuestión de filtrar las variables y luego filtrar la "cadena" que desea de esas variables, asignar eso a una matriz y luego pasar la matriz a la función.
ALL_VARIABLES=( $(set | grep -Ea '^VARIABLE.*=' | cut -d = -f 2) )
randomfunction "${ALL_VARIABLES[@]}"
Básicamente, obtendrá toda la salida de set
y grep
para cualquier línea que comience con VARIABLE
seguida de cualquier carácter y un signo igual, luego la pasará para cut
separar el nombre y el valor, y asignará todos los valores a la ALL_VARIABLES
matriz, que luego se expandirá. y pasado como argumentos arandomfunction
Respuesta2
puedes usar una matriz y pasar la matriz para que funcione.
#!/bin/bash
Variable=(/tmp /tmp/a.txt /tmp/b.txt)
function Test(){
Values=("$@")
echo "${Values[0]}"
echo "${Values[1]}"
echo "${Values[2]}"
}
echo "${Variable[0]}"
echo "${Variable[1]}"
echo "${Variable[2]}"
echo "${Variable[@]}"
#Call the Test function and pass the array
Test "${Variable[@]}"