在一個半猜測,你想要寫的是:
if [ "$#" -eq 1 ] && grep -q "$1" test.txt; then
在什麼ocassions我們應該用方括號?
在歷史上,測試命令,/bin/test
是有聯繫的/bin/[
,並且是外部命令,而不是外殼內置。現在(幾十年來),它一直是內置的外殼。但是,它遵循命令的結構,需要空格來分隔參數,如果它被調用爲[
,那麼最後一個參數必須是]
。
至於當你使用它時,你需要測試一個條件時使用它。
請注意,你可以寫:
if ls; false; true; then echo "the last command counts"; else echo "no it doesn't"; fi
的if
命令執行一個或多個命令序列,並測試最後一個命令的退出狀態。如果退出狀態爲0,則成功執行then
子句;如果退出狀態不爲0,則採用else
子句。
因此,您可以在需要測試某些東西時使用該測試。它可以是if
或elif
或while
(或until
)的一部分。它也可以對自己使用||
或&&
:
[ -z "$1" ] && echo "No arguments - or the first argument is an empty string"
[ "$var1" -gt "$var2" ] || echo "Oops!" && exit 1
這些可以寫成if
陳述過,當然:
if [ -z "$1" ]
then echo "No arguments - or the first argument is an empty string"
fi
if [ "$var1" -le "$var2" ]
then
echo "Oops!"
exit 1
fi
注意,我需要反轉測試在第二改寫。 Bash有一個內置的!
運營商用於反轉下面的命令的退出狀態,所以我還可以這樣寫:
if ! [ "$var1" -gt "$var2" ]
和test
有!
太多,所以它也可以寫成:
if [ ! "$var1" -gt "$var2" ]
該文件有多大? – 2014-11-08 04:52:42