Eu tenho alguns scripts antigos que tento atualizar. Alguns dos códigos condensa para:
export X=`(echo "abc"; echo "def")`
echo $X
que fornece a saída esperada:
abc def
Agora, a internet me diz que os backticks estão fora $()
é o que eu preciso usar, mas quando tento:
export X=$((echo "abc"; echo "def"))
X
não está definido e recebo o erro:
bash: echo "abc"; echo "def": syntax error: invalid arithmetic operator (error token is ""abc"; echo "def"")
O que estou fazendo de errado?
`...`
e$(...)
iniciar um subshell de qualquer maneira, para que o interior(...)
não seja necessário (desperdice um processo). Você precisaria do espaço em coisas como,$( (...); (...) )
por exemplo (onde os subshells internos podem ser necessários).Experimentar
export X="$(echo "abc"; echo "def")"
fonte
ksh
ebash
sendo as únicas exceções).