Você pode fazer assim:
- Declare a variável
$packagescomo array - Leia o conteúdo do arquivo
packageListem$packages - Execute o make com todos os elementos da matriz como lista (
${packages[*]})
Portanto, esse snippet deve funcionar:
declare -a packages
packages=($(< packageList))
make image PROFILE=TLWR740 PACKAGES="${packages[*]}"
Um comentário é apropriado sobre ${packageList[*]} . Isso se expande para todos os elementos da matriz como uma palavra da shell . Isso é semelhante se você escrever "one two three" (observe as aspas) na linha de comando.
Um exemplo simples, usando uma função first , que imprime seu primeiro argumento :
$ function first { echo $1 ; }
$ first one two three
one
$ first "one two three"
one two three
Agora, com uma matriz:
$ foo=(one two three)
$ first "${foo[@]}"
one
$ first "${foo[*]}"
one two three
Portanto, com @ , o shell divide o array em várias palavras shell, usando * , não.