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=""

関連情報