Script Unix: uso de data e uso de para

0

MinuteNow = date +%M ;

for ((i=2;i<=57;i+=5))
do
        if [ "$MinuteNow" == "$i" ]; then
                *************
        fi
done

O problema é para 2 e 7, a saída de comando de data é 02 e 07, mas a variável $ i é 2 e 7 ... Eu tentei adicionar uma condição para alterar apenas esses 2, mas estava aplicando o loop. ..

Você pode me dar uma dica, por favor?

    
por blind 22.02.2011 / 12:20

4 respostas

2

Use "-eq" para comparar números, então você não terá este problema:

if [ "$MinuteNow" -eq "$i" ]; then

deve fazer isso.

(existem muitas outras possibilidades, sendo $ {MinuteNow # 0} outro simples, mas eu acho que usar o operador correto -eq ao invés de == é o melhor).

    
por 22.02.2011 / 12:30
1

No Bash, você precisará forçar a string a basear 10:

if (( 10#$MinuteNow == i ))    # you can omit the dollar sign on bare variables in this context

No shell Bourne (sh):

if [ $MinuteNow -eq $i ]

Em zsh ou ksh93:

if (( MinuteNow == i ))    # you can omit the dollar sign on bare variables in this context
    
por 22.02.2011 / 15:25
1

Tente

 [ $MinuteNow -eq $i ]

Veja teste de homem para mais informações.

    
por 22.02.2011 / 12:29
0

Em bash , use:

(( $MinuteNow == $i ))

como em:

if (( $MinuteNow == $i )); then

Se a compatibilidade com sh for necessária, use:

[ "$MinuteNow" -eq "$i" ]
    
por 22.02.2011 / 14:58