2011-05-02 22 views
2
sfdisk -D $val << EOF 
,,$type 
EOF 

如何在執行後檢查其狀態?不通過如果... $ ?,但通過disjunction ||。 我的意思是我可以做的folllowing: ls ||退出4 如果ls遇到錯誤,它將以代碼4退出,但我怎麼能在我的例子中做到這一點?多行命令和狀態碼

第二個問題是,如何在失敗時執行多個命令?是這樣的好嗎?

`ls` || { echo "!!!"; exit 4 } 

謝謝!

回答

5

你實際上是在問兩個不同的問題...

的回答第一個,是你把條件< < FOO部分後:

我使用& &這裏輕鬆看到輸出。但有了這個命令集:

# cat << EOF && (echo hi ; echo there) 
foo 
bar 
EOF 

你得到:

foo 
bar 
hi 
there 

回答你的第二個問題,你應該使用()S:

# bash -c 'exit 1' || (echo hi ; echo there) 
hi 
there 
+1

關於第二個問題:'()'將在一個子shell中運行其內容,這可能不是你想要的(例如退出,設置變量等將無法按預期工作)。相反,在命令:'bash -c'exit 1'||後面用'{}'加分號{回聲你好;在那裏回聲; }' – 2011-05-02 16:07:40

+0

嗨。不能這樣工作: 'sfdisk -D $ dev << EOF || {losetup -d $ dev;退出3} ,, $ fsys EOF' – azerIO 2011-05-02 16:29:59

+1

您需要';'之後3和} – 2011-05-02 16:38:01