
これに似ています:シェルスクリプトで最後に実行されたコマンドを返す。
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=""
。