2009-07-28 55 views
5

我想檢查一下我的字符串是否包含一個或多個星號。檢查一個字符串是否包含星號(*)

我已經試過這樣:

if [[ $date_alarm =~ .*\*.* ]] 
then 
    ... 
fi 

它工作時,我直接啓動腳本,但如果這個腳本關機(通過更新的rc.d安裝在運行級別0和6腳本)中調用

任何想法,建議?

謝謝

+1

我的猜測是你的init系統不使用`/ bin/bash`作爲解釋器,而是使用`/ bin/sh`。 – 2009-07-28 12:49:29

+0

如果William的答案奏效,請不要忘記點擊「接受答案」按鈕! – dbr 2009-07-28 13:40:35

回答

2

總是引用字符串。

要檢查字符串$ date_alarm包含一個星號,你可以這樣做:

 
if echo x"$date_alarm" | grep '*' > /dev/null; then 
    ... 
fi 
+0

如果[[「$ date_alarm」=〜。* \ *。*]]很好地工作 – voidAndAny 2009-07-28 12:34:33

0

會發生什麼,如果你更換

if [[ $date_alarm =~ .*\*.* ]] 

if [[ "$date_alarm" =~ .*\*.* ]] 

您可能還需要試試:

if [[ "$date_alarm" =~ '\*+' ]] 

不知道那一個......

問候

+0

不工作,但正如我所說的奇怪的是,關閉 如果[[ 「$ date_alarm」=〜 '\ * +']] 未測試 Tahnks – voidAndAny 2009-07-28 12:36:00

+0

引用的圖案:如果[[ 「$ date_alarm」=〜] 「* \。*。*」] – bstpierre 2009-07-28 15:43:39

0
if echo $date_alarm|perl -e '$_=<>;exit(!/\*/)' 
then 
    ... 
fi 
1
case "$date_alarm" in 
*\**) 
    ... 
    break 
    ;; 
*) 
    # else part 
    ... 
    ;; 
esac 

的語法,好了,/ bin/sh的,但它的作品。

0

最後

if echo x"$date_alarm" | grep '*' > /dev/null; then 

的伎倆

奇怪的事情=〜。 *。不僅在初始化背景下關機期間工作,但完美的工作,如果在bash環境中啓動....

0

無需將stdout和別人一樣做。使用grep的-q選項代替:

if echo x「$ date_alarm」| grep -q'*';那麼

相關問題