Por que o bash precisa && para fazer eco de uma variável em uma linha?


12

Por que SOMETHING=1 && echo $SOMETHINGprecisa &&retornar 1
Por que não SOMETHING=1 echo $SOMETHINGretorna1


7
Que vergonha para quem desvalorizou sua pergunta, especialmente sem deixar comentários construtivos. É uma pergunta válida, e a ordem na qual o bash faz expansão de palavra / parâmetro / variável / til e execução de comandos é complicada. Estou lhe dando um +1.
Spiff


tecnicamente, "echo 1" retorna 0, e a saída é 1 ... ou seja, "echo" sai com o status "0" e é exibida para mostrar os argumentos em destaque. O fraseado "retorna 1" para mim estava implicando "status de saída", não "saídas", e era um pouco confuso à primeira vista.
5605 Michael

Respostas:


8

Como o bash faz a expansão de variáveis ​​antes de interpretar as instruções de atribuição de variáveis. Então, como ALGO não foi definido anteriormente, seu comando se torna…

SOMETHING=1 echo ''

... então é executado.


A expansão de variáveis ​​é igual à substituição de variáveis?
Joel

11
@JoelL: Correct
Gordon Davisson

0

exportar e ecoar ao mesmo tempo

root@kali:~# echo ${SOMETHING=1}
1
root@kali:~# echo $SOMETHING
1
root@kali:~# unset SOMETHING
root@kali:~# echo $SOMETHING

root@kali:~# echo ${SOMETHING=1}
1
root@kali:~# 

Outro exemplo pateta xD

root@kali:~# echo ${SOMETHING=1} ${PLUS=+} ${SUMTHIN=2} ${EQUALS==} && expr $SOMETHING $PLUS $SUMTHIN
1 + 2 =
3
root@kali:~# 
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.