我想检查我的字符串是否包含一个或多个星号。
我试过这个:
if [[ $date_alarm =~ .*\*.* ]]
then
...
fi
当我直接启动脚本时它起作用,但是如果在关闭期间调用此脚本(脚本通过update-rc.d在运行级别0和6中安装)则不行。
有什么想法,建议吗?
由于
答案 0 :(得分:3)
始终引用字符串。
要检查字符串$ date_alarm是否包含星号,您可以执行以下操作:
if echo x"$date_alarm" | grep '*' > /dev/null; then ... fi
答案 1 :(得分:2)
expr "$date_alarm" : ".*\*.*"
答案 2 :(得分:1)
case "$date_alarm" in
*\**)
...
break
;;
*)
# else part
...
;;
esac
语法是,/ bin / sh,但它可以工作。
答案 3 :(得分:0)
如果替换
会发生什么if [[ $date_alarm =~ .*\*.* ]]
与
if [[ "$date_alarm" =~ .*\*.* ]]
您可能还想尝试:
if [[ "$date_alarm" =~ '\*+' ]]
不确定那个......
问候
答案 4 :(得分:0)
if echo $date_alarm|perl -e '$_=<>;exit(!/\*/)'
then
...
fi
答案 5 :(得分:0)
最后
if echo x"$date_alarm" | grep '*' > /dev/null; then
做了这个伎俩
奇怪的事情=〜。 *。在关机期间不能仅在init上下文中工作,但如果在bash上下文中启动,则可以正常工作....
答案 6 :(得分:0)
无需像其他人一样重定向stdout。请改用grep的-q选项:
if echo x&#34; $ date_alarm&#34; | grep -q&#39; *&#39; ;然后