Warum benötigt Bash &&, um eine Variable in einer Zeile wiederzugeben?

Warum benötigt Bash &&, um eine Variable in einer Zeile wiederzugeben?

Warum SOMETHING=1 && echo $SOMETHINGmuss ich &&zurückkehren? 1
Warum kehrt ich nicht SOMETHING=1 echo $SOMETHINGzurück ?1

Antwort1

Weil Bash eine Variablenerweiterung durchführt, bevor Variablenzuweisungsanweisungen interpretiert werden. Da also ETWAS zuvor nicht definiert wurde, wird Ihr Befehl zu …

SOMETHING=1 echo ''

…wird dann ausgeführt.

Antwort2

Export und Echo gleichzeitig

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

Noch ein dämlicheres Beispiel xD

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

Antwort3

Sie müssen die Variable später auswerten (nachdem sie zugewiesen wurde). Verwenden Sie beispielsweise

SOMETHING=1 eval 'echo $SOMETHING'

um die Ausbreitung von zu verhindern SOMETHING.

verwandte Informationen