防止 trap 改变下划线变量 $_

防止 trap 改变下划线变量 $_

我的 bashrc 中有以下代码来获取最后一个命令的执行时间https://stackoverflow.com/a/1862762

function timer_start {
  timer=${timer:-$SECONDS}
}

function timer_stop {
  timer_show=$(($SECONDS - $timer))
  unset timer
}

trap 'timer_start' DEBUG
PROMPT_COMMAND=timer_stop

PS1='[last: ${timer_show}s][\w]$ '

但是当我运行时echo $_它显示“timer_start”而不是最后一个命令参数。

我该如何更改它以保留$_变量?

答案1

你可以这样做:

trap '__=$_; timer_start; : "$__"' DEBUG

相关内容