Gibt den letzten in der Bash-Funktion ausgeführten Befehl zurück

Gibt den letzten in der Bash-Funktion ausgeführten Befehl zurück

Ä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

lastCommandvorheriger Befehl bedeuteninnendie Funktion.

Eine Bash 4.2+-Lösung ist ausreichend.

Antwort1

Sie können beispielsweise verwenden xtrace, set -xum 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 $xtracefilesollten 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="".

verwandte Informationen