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


12

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


77
Vergüenza de quien rechazó su pregunta, especialmente sin dejar comentarios constructivos. Es una pregunta válida, y el orden en que bash realiza la expansión de palabra / parámetro / variable / tilde y la ejecución de comandos es complicado. Te estoy dando un +1.
Spiff


técnicamente, "echo 1" devuelve 0, y la salida es 1 ... es decir, "echo" sale con el estado "0", y se muestra para mostrar los argumentos. La frase "devuelve 1" para mí implicaba "salir del estado", no "salidas", y era un poco confuso a primera vista.
Michael

Respuestas:


8

Porque bash hace expansión variable antes de interpretar las declaraciones de asignación variable. Entonces, como ALGO no se definió previamente, su comando se convierte en ...

SOMETHING=1 echo ''

... luego se ejecuta.


¿Es la expansión variable lo mismo que la sustitución variable?
Joel

1
@JoelL: Correcto
Gordon Davisson

0

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:~# 
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.