Question

Je veux vérifier si ma chaîne contient un ou plusieurs astérisque.

J'ai essayé ceci:

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

Il a travaillé quand je lance le script directement, mais pas si ce script est appelé lors de l'arrêt (script installé dans le niveau d'exécution 0 et 6 via update-rc.d)

Toute idée, suggestion?

Merci

Était-ce utile?

La solution

Indiquez toujours les chaînes.

Pour vérifier si le date_alarm string $ contient un astérisque, vous pouvez faire:

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

Autres conseils

expr "$date_alarm" : ".*\*.*"
case "$date_alarm" in
*\**)
  ...
  break
  ;;
*)
  # else part
  ...
  ;;
esac

La syntaxe est, bien, / bin / sh, mais cela fonctionne.

Et si vous remplacez

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

avec

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

vous pouvez également essayer:

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

pas sûr que l'on ...

concerne

if echo $date_alarm|perl -e '$_=<>;exit(!/\*/)'
then
    ...
fi

Enfin

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

a fait l'affaire

Étrange chose = ~. *. ne fonctionne pas seulement dans le contexte d'initialisation lors de l'arrêt, mais fonctionne parfaitement si le lancement dans le contexte bash ....

Pas besoin de rediriger vers comme d'autres le font stdout. Utilisez l'option -q de la place grep:

si echo x "date_alarm de $" | grep -q '*'; puis

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top