¿Por qué bash necesita && hacer eco de una variable en una línea?

¿Por qué bash necesita && hacer eco de una variable en una línea?

¿Por qué es SOMETHING=1 && echo $SOMETHINGnecesario &&regresar? 1
¿Por qué no SOMETHING=1 echo $SOMETHINGregresa?1

Respuesta1

Porque bash realiza una expansión de variables antes de interpretar declaraciones de asignación de variables. Entonces, como ALGO no fue definido previamente, su comando se convierte en…

SOMETHING=1 echo ''

…luego es ejecutado.

Respuesta2

exportar y hacer eco al mismo tiempo

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:~# 

Otro ejemplo más tonto xD

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

Respuesta3

Debe evaluar la variable más tarde (después de que se asigne). Utilice, por ejemplo,

SOMETHING=1 eval 'echo $SOMETHING'

para evitar la propagación de SOMETHING.

información relacionada