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


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.


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:~# 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.