簡體   English   中英

Shell腳本上的Grep和regex差異行為無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM