我想檢查一下我的字符串是否包含一個或多個星號。檢查一個字符串是否包含星號(*)
我已經試過這樣:
if [[ $date_alarm =~ .*\*.* ]]
then
...
fi
它工作時,我直接啓動腳本,但如果這個腳本關機(通過更新的rc.d安裝在運行級別0和6腳本)中調用
任何想法,建議?
謝謝
我想檢查一下我的字符串是否包含一個或多個星號。檢查一個字符串是否包含星號(*)
我已經試過這樣:
if [[ $date_alarm =~ .*\*.* ]]
then
...
fi
它工作時,我直接啓動腳本,但如果這個腳本關機(通過更新的rc.d安裝在運行級別0和6腳本)中調用
任何想法,建議?
謝謝
總是引用字符串。
要檢查字符串$ date_alarm包含一個星號,你可以這樣做:
if echo x"$date_alarm" | grep '*' > /dev/null; then ... fi
如果[[「$ date_alarm」=〜。* \ *。*]]很好地工作 – voidAndAny 2009-07-28 12:34:33
會發生什麼,如果你更換
if [[ $date_alarm =~ .*\*.* ]]
與
if [[ "$date_alarm" =~ .*\*.* ]]
您可能還需要試試:
if [[ "$date_alarm" =~ '\*+' ]]
不知道那一個......
問候
不工作,但正如我所說的奇怪的是,關閉 如果[[ 「$ date_alarm」=〜 '\ * +']] 未測試 Tahnks – voidAndAny 2009-07-28 12:36:00
引用的圖案:如果[[ 「$ date_alarm」=〜] 「* \。*。*」] – bstpierre 2009-07-28 15:43:39
if echo $date_alarm|perl -e '$_=<>;exit(!/\*/)'
then
...
fi
case "$date_alarm" in
*\**)
...
break
;;
*)
# else part
...
;;
esac
的語法,好了,/ bin/sh的,但它的作品。
最後
if echo x"$date_alarm" | grep '*' > /dev/null; then
的伎倆
奇怪的事情=〜。 *。不僅在初始化背景下關機期間工作,但完美的工作,如果在bash環境中啓動....
expr "$date_alarm" : ".*\*.*"
無需將stdout和別人一樣做。使用grep的-q選項代替:
if echo x「$ date_alarm」| grep -q'*';那麼
我的猜測是你的init系統不使用`/ bin/bash`作爲解釋器,而是使用`/ bin/sh`。 – 2009-07-28 12:49:29
如果William的答案奏效,請不要忘記點擊「接受答案」按鈕! – dbr 2009-07-28 13:40:35