Para ler mais sobre esse assunto, consulte BashFAQ / 024 .
Existem várias maneiras de fazer atribuições de variáveis no Bash:
var=$(command)
read var <<< $(command)
read var <<< EOF
$(command)
EOF
printf -v var "%s" $(command)
etc.
Estou tentando enviar alguns dados de um canal Bash para uma variável Bash usando o comando read, assim:
$ echo "Alexander the Grape" | read quot
$ echo $quot
$
Mas "está vazio". Alguns pesquisando no Google revelaram que isso não é um bug; é um recurso pretendido do Bash. (Seção E5 no FAQ .)
Mas quando eu tentei a mesma coisa em zsh, funcionou. (Idem para ksh.) Existe alguma maneira de fazer isso funcionar no Bash? Eu realmente não quero ter que digitar:
$ quot=$(echo "Alexander the Grape")
Especialmente para comandos longos.
Para ler mais sobre esse assunto, consulte BashFAQ / 024 .
Existem várias maneiras de fazer atribuições de variáveis no Bash:
var=$(command)
read var <<< $(command)
read var <<< EOF
$(command)
EOF
printf -v var "%s" $(command)
etc.
Eu estou supondo que você está tentando criar um comando dentro de uma variável e, em seguida, executá-lo, especificando a variável? Então não faça. execute o comando como está.
Não. Se você preferir o comportamento de um shell diferente, mude para esse shell. Forças de mercado. :)
read quot < <(echo "Alexander the Grape")
Tags bash