Vérifiez si une chaîne contient Asterisk (*)
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
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