2010-11-12 35 views
0

目標是如果沒有輸入,甚至不會啓動$ foo。

如果foo =「diff - xyz」,並且輸入缺失或爲空,這可能很有用。 否則,diff會輸出所有「xyz」作爲差異。

原始問題是「cat doesnotexist | diff - exists」會輸出「exists」的內容(前綴爲「>」),但我希望整個管道都失敗。 我目前的解決方案是:

cat doesnotexist | (read first|| exit 1; (echo "$first"; cat) | diff - exists) 

,但我想要一個較短的。

回答

0
[ -f doesnotexist ] && diff doesnotexist exists 

我刪除了管道,它在你的例子中沒有增加值。嚴格來說,這不會讓差異失敗,它只是沒有執行。

+0

那麼,輸入是在一個遠程節點上,差異運行在本地,所以使用-f會比標題片段更加冗長。所以管道的附加值是它獲取遠程數據。它的輸入看起來像「ssh -x -e none -C who @ where cat doesnotexist |」,但是這對我來說似乎是不需要的細節,所以我沒有告訴。 :-) – Rainer 2010-11-12 15:05:19

+0

在這種情況下,您可能會使用「scp -C who @ where:doesnotexist。&& diff doesnotexist exists」 – 2010-11-12 15:24:04

+0

是的,我也可以。之後需要清理「doesnotexist」,但它更直接。謝謝。 – Rainer 2010-11-12 15:33:14