bash中判斷查找的字符串是否存在

if lsusb | grep "Spreadtrum" > /dev/null 2>&1  

then
    echo " success"
else
    echo " fail"
fi

lsusb | grep "Spreadtrum" > /dev/null 2>&1
if [ "$?" -eq "0" ];then
    echo "success"
else
    echo "fail"
fi

以上2種方式意思相同,故可使用第1種較爲簡潔

主要原因是

BJS\lisa.liu@lisaliuubtpc:~/bin$ lsusb | grep "Spreadtrum"
Bus 002 Device 017: ID 1782:5d04 Spreadtrum Communications Inc.

輸出有很多域,故不能直接使用

if [ -n `lsusb | grep "Spreadtrum"` ]
then
    echo "success"
else
    echo "fail"
fi

否則會出現錯誤提示: bash: [: too many arguments

如果僅有一個域輸出,則可以使用最後一種格式,但需要改寫

if [ -n `lsusb | grep "Spreadtrum" | awk '{ print $7 }'` ]
then
     echo "success"
else
    echo "fail"
fi


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章