我想检查一下我的字符串是否包含一个或多个星号。检查一个字符串是否包含星号(*)
我已经试过这样:
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