Warum braucht bash &&, um eine Variable in einer Zeile wiederzugeben?

12

Warum SOMETHING=1 && echo $SOMETHINGmüssen &&zurückkehren zu 1
Warum funktioniert SOMETHING=1 echo $SOMETHINGRückkehr1

Joel
quelle
7
Schade, wer auch immer Ihre Frage abgelehnt hat, besonders ohne konstruktives Feedback zu hinterlassen. Es ist eine gültige Frage, und die Reihenfolge, in der Bash die Erweiterung von Wörtern / Parametern / Variablen / Tilde und die Ausführung von Befehlen durchführt, ist schwierig. Ich gebe dir eine +1.
Spiff
Technisch gesehen gibt "echo 1" 0 zurück und die Ausgabe ist 1 ... das heißt, "echo" wird mit dem Status "0" beendet und angezeigt, um die Argumente zu stdouten. Die Formulierung "gibt 1 zurück" bedeutete für mich "exit staus", nicht "output", und war auf den ersten Blick etwas verwirrend.
Michael

Antworten:

8

Weil bash vor dem Interpretieren von Variablenzuweisungsanweisungen eine Variablenerweiterung durchführt. Da ETWAS zuvor nicht definiert wurde, wird Ihr Befehl zu…

SOMETHING=1 echo ''

… Wird dann hingerichtet.

Spiff
quelle
Entspricht die Variablenerweiterung der Variablensubstitution?
Joel
1
@ JoelL: Richtig
Gordon Davisson
0

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

Ein weiteres dooferes Beispiel xD

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