web-dev-qa-db-ja.com

トラップがアンダースコア変数$ _を変更しないようにします

最後のコマンドの実行時間を https://stackoverflow.com/a/1862762 から取得するために、bashrcに次のコードがあります。

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」が表示されます。

$_変数を保持するためにこれを変更するにはどうすればよいですか?

2
f0i

あなたができること:

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