Linux
如何在 PROMPT_COMMAND 執行期間檢查 PIPESTATUS 等效項?
我
$PROMPT_COMMAND
在 bash 中有一個自定義記錄最後執行的命令及其返回碼。我很$?
高興地使用後者,直到我意識到對於管道命令這還不夠。我以為我會登錄${PIPESTATUS[@]}
。不幸的是
$PIPESTATUS
,似乎是在呼叫$PROMPT_COMMAND
. 在執行期間我可以使用任何技巧來訪問此資訊$PROMPT_COMMAND
嗎?
提示命令功能中的命令在提示命令後更改
PIPESTATUS
、bash
保存和恢復PIPESTATUS
(和$?
),請參閱此處對預期行為的描述。訣竅是在函式的第一個語句
$PIPESTATUS[]
中保存(和/或$?
),然後覆蓋原始值。function myprompt() { _pipestatus=( "${PIPESTATUS[@]}" ) echo "current: ${PIPESTATUS[@]}" echo "cached : ${_pipestatus[@]}" } PROMPT_COMMAND=myprompt
然後:
$ true | false | true current: 0 cached : 0 1 0
我做了類似於你所描述的事情,但在一個陷阱處理函式中,
ERR
而不是一個提示命令。