Você pode fazer assim:
- Declare a variável
$packages
como array - Leia o conteúdo do arquivo
packageList
em$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.