“$ @” expansão para variáveis definidas pelo usuário

4

Estou tentando fazer com que uma variável (bourne shell) se expanda como " $ @ ", de modo que produza várias palavras com algumas tendo espaços preservados. Eu tentei definir a variável de muitas maneiras diferentes, mas ainda não consigo trabalhar:

#!/bin/sh

n=\"one\ two\"\ three
for i in "$n"; do
echo $i
done

Eu quero definir a variável para que o script produza one two primeiro e, em seguida, three da próxima iteração, que é o que você obteria se substituísse a variável citada por " $ @ " e passou 'one two' three como argumentos.

" $ @ " é mágica?

    
por user126144 04.08.2015 / 00:42

1 resposta

4

Então bourne shell (IIRC) não suporta matrizes. Você ainda pode usar "$ @"

set -- "one two" three
for i in "${@}" ; do
    echo "$i"
done

Saídas:

one two
three

Testado no AIX 7.1 bsh.

    
por 04.08.2015 / 00:58