Obtendo erro com sleep e argumento no script sh [closed]

1

Estou fazendo algo assim

#!/bin/bash
END=3
time_w = 1
for ((i=1;i<=END;i++)); do
    # do something
    sleep time_w
done

mas estou recebendo

sleep: invalid time interval ‘time_w’
    
por Bob 04.05.2015 / 22:41

2 respostas

3

Você cometeu dois erros:

  • Em bash , não deve haver espaços em torno de = na declaração de variável, portanto, a declaração deve ser:

    time_w=1
    
  • No comando sleep time_w , você deve usar o valor da variável time_w , ou seja, "$time_w" , não a variável em si:

    sleep "$time_w"        
    
por 04.05.2015 / 22:47
3

Você precisa usar $time_w . Você precisa do $ na frente das variáveis bash quando elas não estão dentro de expressões aritméticas ( ((...)) ).

#!/bin/bash
END=3
time_w=1
for ((i=1;i<=END;i++)); do
    # do something
    echo "$i sleeping for $time_w"
    sleep "$time_w"
done
    
por 04.05.2015 / 22:43