Задать вопрос
@dimjkee90

Как повторить цикл в bash?

Добрый день!
Подскажите, пожалуйста, что почитать и как можно реализовать и возможно ли это сделать в bash?
Нужно постоянно проверять переменные, если переменные равны
$1 = $2
то выполнить команду нужную мне и продолжить сравнение переменных.
Если они равны, то продолжать их сравнивать и ничего не делать, до тех пор пока они станут не равны,
если они не равны
$1 != $2
То повторить все с начала
  • Вопрос задан
  • 224 просмотра
Подписаться 1 Средний 4 комментария
Решения вопроса 1
hint000
@hint000
у админа три руки
На основе комментариев, как-то так
#!/bin/bash
flag=0
while true; do
  date=`date |awk'{print $3, $4}'|sed's/.\{3\}$//'`
  file=`date -r /var/log/nginx/access.log |awk'{print $3, $4}'|sed's/.\{3\}$//'`

  if [ "$date"="$file" ];
  then
      if [ "$flag"="0" ];
      then 
        flag=1
        command_name
        echo "Сервис перезапущен"
      fi
  else
    flag=0
    echo "Сервис не перезапущен"
  fi
done

P.S. чуть не пропустил косяк: квадратные скобки нужно отделять пробелами (у вас в примере не отделены).
И, наверняка, вам нужно добавить какую-то паузу между проверками (секунду, минуту,..), а то проверка будет делаться много раз в секунду, на ровном месте создавая нагрузку.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
Нужно уточнить условие, когда именно и как меняются переменные

Нужно постоянно проверять переменные, если переменные равны
$1 = $2
то выполнить команду нужную мне и продолжить сравнение переменных.

При следующем сравнении переменные снова будут равны - снова выполнять нужную команду? Сколько раз успеет выполниться нужная вам команда, пока переменные станут неравны?

Опишите пример нужного скрипта на любом выдуманном синтаксисе, чтобы было понятнее
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы