检查字符串是否包含星号(*)

时间:2009-07-28 12:04:12

标签: linux string bash init

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

我试过这个:

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

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

有什么想法,建议吗?

由于

7 个答案:

答案 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; ;然后