Как использовать kdialog progressbar из сценария Bash, когда панель была инициализирована в другом скрипте?

Вот пример того, как использовать kdialog progressbar. Оно работает.

dbusRef=`kdialog --progressbar "Press Cancel at Any time" 10` qdbus $dbusRef showCancelButton true until test "true" = `qdbus $dbusRef wasCancelled`; do sleep 1 inc=$((`qdbus $dbusRef Get "" "value"` + 1)) qdbus $dbusRef Set "" "value" $inc; done qdbus $dbusRef close 

Однако я не могу понять, как заставить его работать, когда основной файл сценария вызывает второй файл сценария. Я хочу обновить один и тот же индикатор выполнения второго скрипта.

Ошибка:

  • Значение qdbus Set '' 53 Path '' не является допустимым именем пути.

Код для обновления панели прогресса точно такой же, как и во втором файле сценария. В общем, это так:

 qdbus $dbusRef Set "" value "$PROGRESS" 

Очевидно, что некоторые значения переменных не передаются. Но ни один из уроков, которые я видел, не объясняет переменные. Например, что такое value ? Что такое $dbusRef ?

Короче говоря, как мне обновить один и тот же индикатор производительности из второго файла сценария bash, который вызывается первым?

One Solution collect form web for “Как использовать kdialog progressbar из сценария Bash, когда панель была инициализирована в другом скрипте?”

Вы забыли опубликовать оба сценария. Но, учитывая ваше описание, похоже, что вы устанавливаете переменную dbusRef в один сценарий оболочки и dbusRef доступ к ней в другом скрипте. Это не работает, потому что каждая оболочка имеет свой собственный набор переменных. Вам нужно передать переменную из вызывающего скрипта в вызываемый скрипт.

Легкий способ сделать это – превратить переменную в переменную среды. Вы делаете это с помощью встроенного export . В вызывающем:

 export dbusRef="$(kdialog --progressbar "Press Cancel at Any time" 10)" … some_other_program_that_happens_to_also_be_a_shell_script 

В вызываемом скрипте:

 PROGRESS='something or other' qdbus "$dbusRef" Set "" value "$PROGRESS" 

В качестве альтернативы вместо использования export вы можете использовать любой метод, который вам нравится передавать информацию, такую ​​как аргумент командной строки.

 dbusRef="$(kdialog --progressbar "Press Cancel at Any time" 10)" … some_other_program_that_happens_to_also_be_a_shell_script argument1 argument2 "$dbusRef" argument4 

и в названном сценарии:

 PROGRESS='something or other' qdbus "$3" Set "" value "$PROGRESS" 
  • Сценарий оболочки работает при сохранении с помощью nano, но не при сохранении с помощью Notepad ++
  • Как сохранить переменные в скрипте, который может быть разделен между двумя прогонами awk в отношении того же входного файла в скрипте?
  • Где хранятся программные вызовы процесса загрузки
  • Скрипт не ждет подпроцессов из цикла
  • Сценарий, вызывающий ifconfig и службу openvpn, не будет работать, но если интерфейс уже работает, он работает
  • Преобразование числа месяцев в месяц
  • извлеките файл из jar-файла и получите diff
  • Выполнение нескольких вызовов в программе с помощью сценария оболочки bash
  • Почему обратная косая черта преобразуется в пространство в выражении эха, если IFS = '\'?
  • как я могу выполнить вычисление чисел из текстового файла в сценарии оболочки
  • Получить текущий каталог скриптов (чтобы я мог включать файлы без относительных путей и запускать скрипт из разных источников)
  • Interesting Posts

    Как обнаружить скрипт при загрузке рабочего стола пользователя?

    Установка переменных среды во время выполнения в KDE4

    Разрешение конфликта между доменом подсети openvpn и доменом локальной подсети

    Можно ли предотвратить создание файлов, являющихся общедоступными для чтения?

    SSH-туннель, настройка перенаправления портов

    Как сжать файловую систему XFS?

    дистанционное управление vlc с использованием скрипта через ssh

    Как использовать SFTP в системе, которая требует sudo для аутентификации root и ssh?

    Дублировать файл x раз в командной оболочке

    Как установить определенную версию reiserfsprogs?

    Разделите файлы в каталоге и переместите их в другой вновь созданный каталог

    Netboot – Как установить статический IP-адрес

    как выводить текст на экран и файл внутри сценария оболочки?

    Не удается выйти из режима переднего плана в STunnel

    systemctl сохраняет тайм-аут при перезагрузке службы

    Linux и Unix - лучшая ОС в мире.