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

Foi útil?

Solução

quote cordas

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top