![返回 bash 函数中执行的最后一个命令](https://linux22.com/image/134337/%E8%BF%94%E5%9B%9E%20bash%20%E5%87%BD%E6%95%B0%E4%B8%AD%E6%89%A7%E8%A1%8C%E7%9A%84%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4.png)
与此类似:返回 shell 脚本中执行的最后一个命令。
lastCommand=$(some command here)
是否可以达到相同的结果,但在 bash 函数而不是 bash 脚本中使用?
聚苯乙烯
lastCommand
表示上一个命令里面功能。
Bash 4.2+ 解决方案就足够了。
答案1
您可以使用xtrace
, ieset -x
来获取 shell 执行的所有命令的历史记录:
设置:
xtracefile=$(mktemp)
exec 9>"$xtracefile"
BASH_XTRACEFD=9
set -x
然后运行任何东西
foo() { echo foo; echo bar; }
foo
现在$xtracefile
应该包含以下行
+ echo foo
+ echo bar
你可以用它来选择你想要的任何东西。请注意,这不会在任何时候清除或清理文件,它会无限期地增长。
如果您想去掉这些+
符号,请指定PS4=""
。