10

我想检查我的字符串是否包含一个或多个星号。

我试过这个:

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

当我直接启动脚本时它起作用了,但如果在关机期间调用此脚本则不起作用(脚本通过 update-rc.d 安装在运行级别 0 和 6 中)

任何想法,建议?

谢谢

4

7 回答 7

7

总是引用字符串。

要检查字符串 $date_alarm 是否包含星号,您可以执行以下操作:

如果回显 x"$date_alarm" | grep '*' > /dev/null; 然后
    ...
菲
于 2009-07-28T12:09:03.127 回答
2
expr "$date_alarm" : ".*\*.*"
于 2010-10-28T14:37:22.503 回答
1
case "$date_alarm" in
*\**)
  ...
  break
  ;;
*)
  # else part
  ...
  ;;
esac

语法是,好吧,/bin/sh,但它有效。

于 2009-07-28T12:24:55.260 回答
1

如果你更换会发生什么

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

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

您可能还想尝试:

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

不确定那个...

问候

于 2009-07-28T12:12:06.490 回答
0

最后

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

成功了

奇怪的东西=~。*。在关机期间不仅在初始化上下文中工作,但如果在 bash 上下文中启动则可以完美工作......

于 2009-07-28T12:39:26.370 回答
0
if echo $date_alarm|perl -e '$_=<>;exit(!/\*/)'
then
    ...
fi
于 2009-07-28T12:17:42.107 回答
0

无需像其他人那样重定向标准输出。请改用 grep 的 -q 选项:

如果回显 x"$date_alarm" | grep -q '*' ; 然后

于 2017-11-10T20:50:11.950 回答