2009-07-28 139 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'*';那么

相关问题