
Ähnlich wie dies:Gibt den letzten im Shell-Skript ausgeführten Befehl zurück.
lastCommand=$(some command here)
Ist es möglich, dasselbe Ergebnis zu erzielen, wenn es stattdessen innerhalb einer Bash-Funktion und nicht eines Bash-Skripts verwendet wird?
PS
lastCommand
vorheriger Befehl bedeuteninnendie Funktion.
Eine Bash 4.2+-Lösung ist ausreichend.
Antwort1
Sie können beispielsweise verwenden xtrace
, set -x
um einen Verlauf aller von der Shell ausgeführten Befehle abzurufen:
aufstellen:
xtracefile=$(mktemp)
exec 9>"$xtracefile"
BASH_XTRACEFD=9
set -x
dann führe aus, was auch immer
foo() { echo foo; echo bar; }
foo
Jetzt $xtracefile
sollten die Zeilen enthalten sein
+ echo foo
+ echo bar
und Sie können damit arbeiten und auswählen, was Sie möchten. Beachten Sie, dass die Datei dadurch zu keinem Zeitpunkt gelöscht oder bereinigt wird, sie wird auf unbestimmte Zeit wachsen.
+
Wenn Sie die Zeichen loswerden möchten , weisen Sie zu PS4=""
.