Verifique se uma string contém Asterisco (*)
Pergunta
Eu quero verificar se a minha seqüência de conter um ou mais asterisco.
Eu tentei isso:
if [[ $date_alarm =~ .*\*.* ]]
then
...
fi
Ele trabalhou quando eu lançar diretamente o script, mas não se este script é chamado durante o encerramento (script instalado no nível de execução 0 e 6 via update-rc.d)
Qualquer idéia, sugestão?
Graças
Solução
Sempre.
Para verificar se a string $ date_alarm contém um asterisco, você pode fazer:
if echo x"$date_alarm" | grep '*' > /dev/null; then ... fi
Outras dicas
expr "$date_alarm" : ".*\*.*"
case "$date_alarm" in
*\**)
...
break
;;
*)
# else part
...
;;
esac
A sintaxe é, bem, / bin / sh, mas funciona.
O que acontece se você substituir
if [[ $date_alarm =~ .*\*.* ]]
com
if [[ "$date_alarm" =~ .*\*.* ]]
Você também pode querer experimentar:
if [[ "$date_alarm" =~ '\*+' ]]
não tenho certeza sobre isso ...
relação
if echo $date_alarm|perl -e '$_=<>;exit(!/\*/)'
then
...
fi
Finalmente
if echo x"$date_alarm" | grep '*' > /dev/null; then
fez o truque
Estranho coisa = ~. *. não funciona apenas no contexto de inicialização durante o encerramento, mas o trabalho perfeitamente, se o lançamento no contexto festa ....
Não há necessidade de redirecionar stdout como os outros fazem. Use a opção -q de grep em vez disso:
Se o eco x "$ date_alarm" | grep -q '*'; então