MinuteNow = date +%M ;

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

Проблема для 2 и 7, вывод команды commande даты - 02 и 07, но переменная $ i - 2 и 7 ... Я пытался добавить условие, чтобы изменить только эти 2, но это было ошибка цикла ...

Можете ли вы дать мне совет, пожалуйста?

4 ответа4

2

Используйте "-eq" для сравнения чисел, тогда у вас не будет этой проблемы:

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

должен сделать это.

(есть много других возможностей, так как $ {MinuteNow # 0} - еще одна простая возможность, но лучше использовать правильный оператор -eq вместо ==).

1

Пытаться

 [ $MinuteNow -eq $i ]

Смотрите man test для получения дополнительной информации.

1

В Bash вам нужно будет перевести строку в базу 10:

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

В оболочке Борна (ш):

if [ $MinuteNow -eq $i ]

В zsh или ksh93:

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

В bash используйте:

(( $MinuteNow == $i ))

как в:

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

Если требуется совместимость с sh , используйте:

[ "$MinuteNow" -eq "$i" ]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .