我想检查我的字符串是否包含一个或多个星号。
我试过这个:
if [[ $date_alarm =~ .*\*.* ]]
then
...
fi
当我直接启动脚本时它起作用了,但如果在关机期间调用此脚本则不起作用(脚本通过 update-rc.d 安装在运行级别 0 和 6 中)
任何想法,建议?
谢谢
总是引用字符串。
要检查字符串 $date_alarm 是否包含星号,您可以执行以下操作:
如果回显 x"$date_alarm" | grep '*' > /dev/null; 然后 ... 菲
expr "$date_alarm" : ".*\*.*"
case "$date_alarm" in
*\**)
...
break
;;
*)
# else part
...
;;
esac
语法是,好吧,/bin/sh,但它有效。
如果你更换会发生什么
if [[ $date_alarm =~ .*\*.* ]]
和
if [[ "$date_alarm" =~ .*\*.* ]]
您可能还想尝试:
if [[ "$date_alarm" =~ '\*+' ]]
不确定那个...
问候
最后
if echo x"$date_alarm" | grep '*' > /dev/null; then
成功了
奇怪的东西=~。*。在关机期间不仅在初始化上下文中工作,但如果在 bash 上下文中启动则可以完美工作......
if echo $date_alarm|perl -e '$_=<>;exit(!/\*/)'
then
...
fi
无需像其他人那样重定向标准输出。请改用 grep 的 -q 选项:
如果回显 x"$date_alarm" | grep -q '*' ; 然后