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

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

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

Responder1

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

SOMETHING=1 echo ''

… então é executado.

Responder2

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 mais bobo xD

root@kali:~# echo ${SOMETHING=1} ${PLUS=+} ${SUMTHIN=2} ${EQUALS==} && expr $SOMETHING $PLUS $SUMTHIN
1 + 2 =
3
root@kali:~# 

Responder3

Você precisa avaliar a variável posteriormente (depois de atribuída). Usar, por exemplo,

SOMETHING=1 eval 'echo $SOMETHING'

para evitar a propagação de SOMETHING.

informação relacionada