Автор Тема: zenity --progress внутри цикла ?  (Прочитано 3387 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ek-nfn

  • Местный
  • *****
  • Автор темы
  • Сообщений: 1422
zenity --progress внутри цикла ?
« : Июнь 08, 2015, 11:52:15 »
Способна ли эта утилита работать внутри цикла в конвейере с изменяемой в цикле числовой переменной ?

Не получается выводить целочисленную переменную (0-100) даже в строке текста zenity --progress, не говоря уже про саму шкалу линейки.
Точнее выводится, но лишь при первом цикле. дальше линейка прогресс бара заполняется на 100 % (а из текстового поля исчезает значение переменной) и не реагирует на дальнейшее цикловое изменение переменной. Обновляет линейку и текстовое поле лишь при нажатии ок , но при следующей итерации опять все сбрасывает.
Если подавать числовые данные не в цикле, а простым оператором типа echo c задержкой в 1 секунду из сформированного массива, то все нормально работает. Цикл реализует то же самое, но формирует не массив для подачи в zenity --progress, а меняет переменную в теле цикла, но эффект другой.

Кстати, точно также ведет себя и утилита вывода сообщений - gxmessage.  В цикле не работает вывод изменяемой числовой переменной. Выводится лишь в первом цикле.
« Последнее редактирование: Июнь 08, 2015, 11:54:32 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн sfs

  • Местный
  • *****
  • Сообщений: 700
    • PuppyRus-Arch
Re: zenity --progress внутри цикла ?
« Ответ #1 : Июнь 08, 2015, 13:46:17 »
Вместо zenity юзаю yad
Проще, отзывчивый русскоязычный автор
В аттаче пример прогресса. Запускать wgetprogress3 URL

Оффлайн ek-nfn

  • Местный
  • *****
  • Автор темы
  • Сообщений: 1422
Re: zenity --progress внутри цикла ?
« Ответ #2 : Июнь 08, 2015, 14:24:23 »
yad, как понял, тот же zenity c чуть расширенным функционалом. Мне даже скрипт не надо переписывать, а лишь поменять zenity на yad .  Но попробую вечером.
Он у тебя вынесен из тела цикла
Вот эта конструкция в какие моменты и что передает в yad ?
for......
...........
done | yad --center --multi-progress --auto-kill $YADBARS --title "$TITLE" \
--auto-close --text "$TEXT" --window-icon "$ICON" --image "$IMAGE"
« Последнее редактирование: Июнь 08, 2015, 14:26:13 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн ek-nfn

  • Местный
  • *****
  • Автор темы
  • Сообщений: 1422
Re: zenity --progress внутри цикла ?
« Ответ #3 : Июнь 08, 2015, 14:35:27 »
sfs, ну спасибо, опять ты меня выручил.
По твоему варианту с выносом zenity из тела цикла все нормально заработало  :)

Не подскажешь, что в Bash заменяет безусловные переходы по меткам (типа goto label) ?
« Последнее редактирование: Июнь 08, 2015, 14:41:41 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн sfs

  • Местный
  • *****
  • Сообщений: 700
    • PuppyRus-Arch
Re: zenity --progress внутри цикла ?
« Ответ #4 : Июнь 08, 2015, 14:50:59 »
Не подскажешь, что в Bash заменяет безусловные переходы по меткам (типа goto label) ?
FUNC(){
  echo "$1"
}
FUNC "wqwqwqw"
это?
« Последнее редактирование: Июнь 08, 2015, 14:56:22 от sfs »

Оффлайн ek-nfn

  • Местный
  • *****
  • Автор темы
  • Сообщений: 1422
Re: zenity --progress внутри цикла ?
« Ответ #5 : Июнь 08, 2015, 15:02:49 »
а что это ? Определение и вызов функции ?
Я не про это. Во всех языках есть условные (if... then ...) и безусловные (по меткам строк) переходы. В bash, как понял, безусловные переходы отменили за ненадобностью ??? Вот и вопрос, чем их заменили ? Мой вариант скрипта был бы проще не с циклом по условию, а с применением безусловного перехода . Но такого в Bash я не обнаружил
« Последнее редактирование: Июнь 08, 2015, 15:05:49 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн sfs

  • Местный
  • *****
  • Сообщений: 700
    • PuppyRus-Arch
Re: zenity --progress внутри цикла ?
« Ответ #6 : Июнь 08, 2015, 15:23:18 »
Это вызов функции с передачей параметра
А чем безусловный переход отличается по смыслу от вызова функции?
По номеру строки нет и по мне - это не удобно. А если я что-то выше допишу...

Оффлайн ek-nfn

  • Местный
  • *****
  • Автор темы
  • Сообщений: 1422
Re: zenity --progress внутри цикла ?
« Ответ #7 : Июнь 08, 2015, 15:36:03 »
не по номеру строки, а по метке строки. Нужной строке присваивается метка и в необходимом случае просто переходим на нее оператором типа goto метка.
Во всех языках присутствут безусловные переходы. Не понял по какой причине в Bash отказались от этого удобного "силового" перехода. Часто позволяет упрощать программу, избегая циклов или условных переходов.
Devuan ASCII x32..x64

Оффлайн sfs

  • Местный
  • *****
  • Сообщений: 700
    • PuppyRus-Arch
Re: zenity --progress внутри цикла ?
« Ответ #8 : Июнь 08, 2015, 15:50:58 »
goto в bash нет и , честно говоря не понимаю чем в моем примере это было бы удобнее
« Последнее редактирование: Июнь 08, 2015, 15:52:33 от sfs »

Оффлайн ek-nfn

  • Местный
  • *****
  • Автор темы
  • Сообщений: 1422
Re: zenity --progress внутри цикла ?
« Ответ #9 : Июнь 08, 2015, 15:57:05 »
Ну я понял где рыть замену  безусловным переходам. Возможно в Bash функции не совсем то , что я знал по другим языкам. Надо почитать.
Devuan ASCII x32..x64