2013-04-12 57 views

回答

3

外嘗試寫這樣說:

test -f no_such_file || { ok='0'; echo ggg; } 

的{}會給你分組,但不會啓動一個子shell。在這種情況下,& &沒有用,所以我用';'替換了它。

2

原因是(ok='0' && echo ggg)在子外殼中運行,因爲它包含在() s中。如果沒有括號運行:

ok="1" 
test -f no_such_file || ok='0' && echo ggg 
> ggg 
echo $ok 
> 0 

你將不得不調整自己的邏輯離開賦值語句()小號

+0

謝謝亞歷克斯,但你的回答產生了一個不正確的結果 - 無論no_such_file是否存在,echo ggg都會被執行 –