Em seu comentário , parece que você tem uma matriz em bash
que gostaria de passar para um programa awk
na linha de comando.
Veja uma maneira fácil de fazer isso:
array=("my 1st item" "my 2nd item" "the last item")
(
IFS=:
awk -v var="${array[*]}" '
BEGIN {
array_len = split(var, array, ":")
for (i = 1; i <= array_len; ++i)
printf("Item #%d is \"%s\"\n", i, array[i])
}'
)
Isso produziria
Item #1 is "my 1st item"
Item #2 is "my 2nd item"
Item #3 is "the last item"
Isso pega a matriz e a transforma em uma única sequência de itens :
-delimited. Se algum dos elementos da matriz contiver :
, escolha outro caractere para delimitar os itens na sequência. A expansão de ${array[*]}
unirá os itens na matriz no primeiro caractere de $IFS
, e é por isso que definimos essa variável antes de executar essa expansão. Esta string é passada para awk
como a variável var
.
No bloco BEGIN
no programa awk
, criamos a matriz array
e também rastreamos o comprimento da matriz em array_len
por meio da divisão de var
on :
. O loop é apenas para mostrar que conseguimos dividir a string com sucesso.
Definimos IFS
e executamos nosso programa awk
em um subshell para que o restante do script possa ser executado com uma variável IFS
não modificada.