Возврат последней команды, выполненной в функции bash

Возврат последней команды, выполненной в функции bash

Похоже на это:Возврат последней команды, выполненной в скрипте оболочки.

 lastCommand=$(some command here)

Можно ли добиться того же результата, но использовать его внутри функции bash, а не скрипта bash?

ПС

lastCommandозначает предыдущую командувнутрифункция.

Достаточно решения Bash 4.2+.

решение1

Вы можете использовать xtrace, например, set -xчтобы получить историю всех команд, выполняемых оболочкой:

настраивать:

xtracefile=$(mktemp)
exec 9>"$xtracefile"
BASH_XTRACEFD=9
set -x

затем запустите что угодно

foo() { echo foo; echo bar; }
foo

Теперь $xtracefileдолжно содержать строки

+ echo foo
+ echo bar

и вы можете работать с этим, чтобы выбрать все, что хотите. Обратите внимание, что это не очищает и не убирает файл в какой-либо момент, он будет расти бесконечно.

Если вы хотите избавиться от +знаков, назначьте PS4="".

Связанный контент