Warum müssen Sie vorsichtig sein, wenn Sie die in Bash integrierte Befehlsverlaufsfunktion verwenden, um vorherige Befehle, die Variablen enthalten, erneut auszuführen?

Warum müssen Sie vorsichtig sein, wenn Sie die in Bash integrierte Befehlsverlaufsfunktion verwenden, um vorherige Befehle, die Variablen enthalten, erneut auszuführen?

Ich weiß, !!dass Befehle erneut ausgeführt werden, aber was genau würde passieren, wenn ich einen Befehl erneut ausführe, der eine Variable im Befehl enthält?

Antwort1

Na, dann versuchen wir es doch mal:

$ foo=bar
$ echo $foo
bar
$ foo=qux
$ !-2
echo $foo
qux
$ history
...
  219  foo=bar
  220  echo $foo
  221  foo=qux
  222  echo $foo
  223  history

Es scheint also, dass der Befehl zum Verlauf hinzugefügt wurdeVorEs erfolgt eine variable Erweiterung.

Antwort2

Es scheint, dass sich etwas Ausprobieren als nützlich erweisen und Ihnen sehr schnell ein Ergebnis liefern kann. Bevor Sie eine Frage stellen, ist es gut, diese Dinge selbst auszuprobieren. Auf diese Weise können Sie fundierte und detaillierte Fragen stellen :)

Da Sie auf diesem Gebiet offenbar noch recht neu sind, könnte Folgendes für Sie von Nutzen sein?

$ history -c
$ FOOD="Bananas"
$ echo $FOOD
Bananas
$ history
  137  FOOD="Bananas"
  138  echo $FOOD
  139  history
$ !138
echo $FOOD
Bananas

Wie Sie sehen, hat der historyBefehl wie erwartet funktioniert. Durch die Ausführung von 138 haben wir genau denselben Befehl ausgeführt wie beim ersten Mal.

Profi-Tipp: Verwenden Sie den manBefehl, um mehr über einen Befehl zu erfahren, der Sie interessiert. Beispiel:

man history

und geben Sie Qzum Beenden ein, wenn Sie fertig sind.

Prost!

verwandte Informationen