Exemplo :
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 há algum mal-entendido, deixe-me dizer de outra forma:
Como faço:
VAR1="foo"
VAR2="bar"
VAR3="job"
sendo gerado como:
"foo bar job"
sem saber o número do VAR, talvez haja também o VAR4, talvez o VAR5 etc.
Responder1
Se você executar o set
comando sem nenhum argumento, ele irá gerar todas as variáveis e funções que foram definidas para a sessão, com isso em mente é apenas uma questão de filtrar as variáveis e depois filtrar a "string" desejada dessas variáveis, atribuir isso para um array e depois passe o array para a função.
ALL_VARIABLES=( $(set | grep -Ea '^VARIABLE.*=' | cut -d = -f 2) )
randomfunction "${ALL_VARIABLES[@]}"
basicamente você obterá toda a saída de set
e grep
para qualquer linha que comece com VARIABLE
seguida por quaisquer caracteres e um sinal de igual, então você passará para cut
separar nome e valor, e atribuirá todos os valores ao ALL_VARIABLES
array, que então será expandido e passado como argumentos pararandomfunction
Responder2
você pode usar array e passar o array para funcionar.
#!/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[@]}"