Я хотел бы определить псевдоним, который выполняет команду каждый x секунды, пока базовый процесс не дает обозначенный вывод. Затем команда должна прекратить выполняться.
Действительно ли это возможно, и если так, как? Справка очень ценится.
Я почти удовлетворен
alias test1='while true; do <command>; sleep 1; done'
кроме я должен вручную остановить его и не могу поэтому заставить его выполнить новую команду, однажды законченную.
Причина вопроса: Dropbox синхронизируется плохо на работе. Иногда, я должен перезапустить его. Я хотел бы сделать то использование команды, которая также говорит, когда синхронизация сделана, например,
alias drop='dropbox stop && dropbox start && while true; do dropbox status; sleep 1; done'
Я хотел бы повторение, остановленное когда 'Актуальные' выводы Dropbox.
, Если Вы заменяете
while true
:
while [ "$(dropbox status)" != "Up to date" ]
это работает, как Вы описываете.
Для останавливаний/начинания Dropbox
и конец после синхронизации сделана, становится затем:
dropbox stop && dropbox start && while [ "$(dropbox status)" != "Up to date" ]; do dropbox status; sleep 1; done
Или лучше (для предотвращения удвоения dropbox status
):
dropbox stop && dropbox start && while [ "$(dropbox status)" != "Up to date" ]; do echo "Updating"; sleep 1 ; done && echo "Finished"
Объяснение
while true
ожидает условия повреждения в цикле (который никогда не прибывает), но while [ "$(dropbox status)" != "Up to date"
делает разрыв замкнутой цепи если dropbox status
возвраты Up to date
Как Jacob говорит, используйте условие на цикле. Я предлагаю until
цикл:
dropbox stop && dropbox start &&
until dropbox status | grep -q "Up to date";
do
sleep 1;
done
until
выполнения до команды возвращают true, именно тогда dropbox status
, вывод содержит Up to date
.
Определите его как функцию в Вашем $HOME/.bashrc
syncDropBox()
{
dropbox stop && \
dropbox start &&
while true;
do
STAT="$(dropbox status)"
if [ "$STAT" = "Up to date" ] ; then
break # or add more commands to finilize the process
fi
sleep 1;
done
}
Теперь, я не имею dropbox
cmd приложение, таким образом, в зависимости от пути это производит состояние, Вы можете или не можете обработать его с AWK
или grep
.
, Но точка, являющаяся этим, можно или сохранить вывод, чтобы оценить или перенаправить вывод к другой команде и оценить их. После того как мы получаем определенную выходную строку - повреждение