2
の場合、manual says$_
は "最後に実行されたコマンドの最後の引数"にする必要があります。ここ
は、予想される動作である:
$ echo 1 2 3
1 2 3
$ echo $_
3
$
DEBUG
トラップを使用して、$_
むしろユーザが入力した最後のコマンドよりも(以下の例でdate
)トラップによって実行最後のコマンドに基づいています。
$ exec bash
$ unset PROMPT_COMMAND
$ trap date DEBUG
$ echo 1 2 3
Sat Dec 3 11:54:33 ICT 2016
1 2 3
$ echo $_
Sat Dec 3 11:54:37 ICT 2016
date
$ # User blinks in confusion and says "but I didn't just type date!"
デフォルトでは、DEBUG
トラップを設定すると$_
のデフォルトの動作を変更するようです。
chrubyとbash-preexecの両方にこの問題があります。
zsh
で期待どおりに興味深いことに、この作品:
$ zsh
genesis% trap date DEBUG
genesis% echo 1 2 3
Sat Dec 3 12:18:01 ICT 2016
1 2 3
genesis% echo $_
Sat Dec 3 12:18:04 ICT 2016
3
genesis%
DEBUG
トラップを使用したとき、どのように私は$_
の値を保持することができますか?
あなたは '$ 1引用していない任意の理由を'? –
@TomHaleパラメータの展開と単語分割は代入では起こりません: 'a = 'hello world * .txt'; b = $ a''b'は上手です。 – andlrc