0
我有一個zsh的腳本,看起來像這樣中止
comm -23 \
<(git ...) \
<(git ... |
sed ...) | ...
有點複雜的管道現在,如果有一個混帳命令失敗,我想放棄我腳本提前。什麼是最好的方法來做到這一點?
我有一個zsh的腳本,看起來像這樣中止
comm -23 \
<(git ...) \
<(git ... |
sed ...) | ...
有點複雜的管道現在,如果有一個混帳命令失敗,我想放棄我腳本提前。什麼是最好的方法來做到這一點?
我只是將命令分成多行。如果git
失敗,則無需啓動comm
。
trap 'rm -f tmp1 tmp2' EXIT
git ... > tmp1 || exit
git ... | sed ... > tmp2 || exit
trap - EXIT
comm -23 tmp1 tmp2 | ...
到trap
電話是可選的,如果你想如果任git
失敗的臨時文件刪除。
嗯,我不想創建臨時文件。 '<()'重定向是否允許'comm'在輸出完成之前開始讀取輸出(因爲它只是傳遞一個文件描述符),還是'comm'只是等待整個輸出? (但是,真的,這只是理論,因爲我將git命令的輸出管理爲「排序」,這會緩衝所有的輸入。) – forivall
臨時文件有什麼問題?只要有可用的東西,'comm'就可以開始讀取,但'sort'在'git'完成之前不會輸出任何東西。 – chepner