注意,爲PIPE
是任何命令或命令序列,則:
if PIPE ; then
# do one thing if PIPE returned with zero status ($?=0)
else
# do another thing if PIPE returned with non-zero status ($?!=0), e.g. error
fi
對於記錄,[ expr ]
是殼內建†test expr
的簡寫。
由於在匹配的情況下grep
返回狀態爲0,並在沒有比賽的情況下,非零的狀態,你可以使用:
if grep -lq '^MYSQL_ROLE=master' ; then
# do one thing
else
# do another thing
fi
注意使用-l
只在乎具有文件至少有一次匹配(以便grep
一找到一個匹配就返回,而不會不必要地繼續解析輸入文件。在一些平臺上[ expr ]
)
†不是內置,而是一種實際的可執行/bin/[
(其最後一個參數會]
),這就是爲什麼[ expr ]
應該包含空格前後的方括號,以及爲什麼它必須遵循通過one of the command list separators(;
,&&
,||
,|
,&
,換行)
謝謝!奇蹟般有效。 – user77413 2010-03-19 21:31:01