[英]Grep and regex diffrent behavior on shell script won't work properly
我目前正在使用Shell腳本,必須檢查字符串B中是否包含字符串A。
所以我立即寫出了(以“鍵”為例)
if [ `echo "$KEY" | grep "\$"` ]
但是由於某種原因,在我的shell腳本中,輸出
echo "$KEY" | grep "\$"
返回“值”
在zshrc上測試相同的命令后,我得到了不同的結果(沒有得到預期的結果)
有人知道它可能來自哪里嗎?
編輯:修改了我寫出腳本的方式后,我將“”引號更改為“”,並得到了正確的結果
echo "$KEY" | grep '\$'
但是我的測試仍然通過寫出來
[ if `echo "$KEY" | grep '\$'` ]
一種更慣用和直接的方法是使用shell的case
語句。 語法有點怪異,仍然有一些元字符需要處理,但不是完整的正則表達式集(如grep
。
case '$key' in
*\$* ) echo contained ;;
* ) echo not ;;
esac
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.