Я пишу простой базовый сценарий bash (начиная с #! /bin/bash, формат файла - .sh), и я пытаюсь сделать работу с баром:
#!/bin/bash
echo "You are running in LXDE mode. Answer 'yes' or 'no' on the following question to continue (or not) in LXDE mode."
zenity --question --text='Do you want to continue in LXDE mode?' --ok-label=Yes --cancel-label=No
echo "Please enter your username and password to continue because the following command needs root privileges."
zenity --password --username
echo "Please enter today's date:"
zenity --calendar --text="Please enter today's date:"
echo "Please enter your name:"
zenity --entry --text='Please enter your name on the text entry below:'
echo "Analyzing data..."
zenity --info --text='Now begin analyzing data. If it takes more than 40 seconds, click on "Cancel".'
zenity --progress --title='Analyzing data...' --pulsate
Я попытался сделайте его перемещением от 0% до 100%, и ничего не произошло. Он застрял на 0%. Я также попытался сделать его пульсирующим, используя опцию --pulsate, все еще на 0% ничего не делая.
Кто-нибудь может мне помочь? Любая помощь будет оценена.
Документы Zenity имеют небольшой фрагмент кода, который должен делать именно то, что вы ищете.
#!/bin/sh
(
echo "10" ; sleep 1
echo "# Updating mail logs" ; sleep 1
echo "20" ; sleep 1
echo "# Resetting cron jobs" ; sleep 1
echo "50" ; sleep 1
echo "This line will just be ignored" ; sleep 1
echo "75" ; sleep 1
echo "# Rebooting system" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress \
--title="Update System Logs" \
--text="Scanning mail logs..." \
--percentage=0
if [ "$?" = -1 ] ; then
zenity --error \
--text="Update canceled."
fi
Сначала попробуйте просто скопировать код, который есть, и запустить его и подтвердить, что он работает как
Если ваш индикатор прогресса застрял на нуле, обязательно обходите любые разделы скрипта, которые могут быть висящими, и заставляя вас думать, что это на самом деле work!
Изменить: Как указано в ответе ниже, причина, по которой он не работает, заключается в том, что зенит ожидает, что прогресс будет отражен в нем, как в примере кода.
Документы Zenity имеют небольшой фрагмент кода, который должен делать именно то, что вы ищете.
#!/bin/sh
(
echo "10" ; sleep 1
echo "# Updating mail logs" ; sleep 1
echo "20" ; sleep 1
echo "# Resetting cron jobs" ; sleep 1
echo "50" ; sleep 1
echo "This line will just be ignored" ; sleep 1
echo "75" ; sleep 1
echo "# Rebooting system" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress \
--title="Update System Logs" \
--text="Scanning mail logs..." \
--percentage=0
if [ "$?" = -1 ] ; then
zenity --error \
--text="Update canceled."
fi
Сначала попробуйте просто скопировать код, который есть, и запустить его и подтвердить, что он работает как
Если ваш индикатор прогресса застрял на нуле, обязательно обходите любые разделы скрипта, которые могут быть висящими, и заставляя вас думать, что это на самом деле work!
Изменить: Как указано в ответе ниже, причина, по которой он не работает, заключается в том, что зенит ожидает, что прогресс будет отражен в нем, как в примере кода.
Документы Zenity имеют небольшой фрагмент кода, который должен делать именно то, что вы ищете.
#!/bin/sh
(
echo "10" ; sleep 1
echo "# Updating mail logs" ; sleep 1
echo "20" ; sleep 1
echo "# Resetting cron jobs" ; sleep 1
echo "50" ; sleep 1
echo "This line will just be ignored" ; sleep 1
echo "75" ; sleep 1
echo "# Rebooting system" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress \
--title="Update System Logs" \
--text="Scanning mail logs..." \
--percentage=0
if [ "$?" = -1 ] ; then
zenity --error \
--text="Update canceled."
fi
Сначала попробуйте просто скопировать код, который есть, и запустить его и подтвердить, что он работает как
Если ваш индикатор прогресса застрял на нуле, обязательно обходите любые разделы скрипта, которые могут быть висящими, и заставляя вас думать, что это на самом деле work!
Изменить: Как указано в ответе ниже, причина, по которой он не работает, заключается в том, что зенит ожидает, что прогресс будет отражен в нем, как в примере кода.
Способ отображения zenity для отображения индикаторов выполнения - захват ваших команд echo из вашего скрипта bash с помощью команды перенаправления | (pipe) (символ).
Например, вы можете попробовать, что я снял с форумов Ubuntu:
#!/bin/bash
# Force Zenity Status message box to always be on top.
(
# =================================================================
echo "# Running First Task." ; sleep 2
# Command for first task goes on this line.
# =================================================================
echo "25"
echo "# Running Second Task." ; sleep 2
# Command for second task goes on this line.
# =================================================================
echo "50"
echo "# Running Third Task." ; sleep 2
# Command for third task goes on this line.
# =================================================================
echo "75"
echo "# Running Fourth Task." ; sleep 2
# Command for fourth task goes on this line.
# =================================================================
echo "99"
echo "# Running Fifth Task." ; sleep 2
# Command for fifth task goes on this line.
# =================================================================
echo "# All finished." ; sleep 2
echo "100"
) |
zenity --progress \
--title="Progress Status" \
--text="First Task." \
--percentage=0 \
--auto-close \
--auto-kill
(( $? != 0 )) && zenity --error --text="Error in zenity command."
exit 0
Если вы перейдете по ссылке на Ubuntu Forums, вы можете прочитать обсуждение этого скрипта. Если после этого у вас еще есть вопросы, пожалуйста, спросите через комментарий ниже, и я сделаю все возможное, чтобы ответить им за вас.
Способ отображения zenity для отображения индикаторов выполнения - захват ваших команд echo из вашего скрипта bash с помощью команды перенаправления | (pipe) (символ).
Например, вы можете попробовать, что я снял с форумов Ubuntu:
#!/bin/bash
# Force Zenity Status message box to always be on top.
(
# =================================================================
echo "# Running First Task." ; sleep 2
# Command for first task goes on this line.
# =================================================================
echo "25"
echo "# Running Second Task." ; sleep 2
# Command for second task goes on this line.
# =================================================================
echo "50"
echo "# Running Third Task." ; sleep 2
# Command for third task goes on this line.
# =================================================================
echo "75"
echo "# Running Fourth Task." ; sleep 2
# Command for fourth task goes on this line.
# =================================================================
echo "99"
echo "# Running Fifth Task." ; sleep 2
# Command for fifth task goes on this line.
# =================================================================
echo "# All finished." ; sleep 2
echo "100"
) |
zenity --progress \
--title="Progress Status" \
--text="First Task." \
--percentage=0 \
--auto-close \
--auto-kill
(( $? != 0 )) && zenity --error --text="Error in zenity command."
exit 0
Если вы перейдете по ссылке на Ubuntu Forums, вы можете прочитать обсуждение этого скрипта. Если после этого у вас еще есть вопросы, пожалуйста, спросите через комментарий ниже, и я сделаю все возможное, чтобы ответить им за вас.
Способ отображения zenity для отображения индикаторов выполнения - захват ваших команд echo из вашего скрипта bash с помощью команды перенаправления | (pipe) (символ).
Например, вы можете попробовать, что я снял с форумов Ubuntu:
#!/bin/bash
# Force Zenity Status message box to always be on top.
(
# =================================================================
echo "# Running First Task." ; sleep 2
# Command for first task goes on this line.
# =================================================================
echo "25"
echo "# Running Second Task." ; sleep 2
# Command for second task goes on this line.
# =================================================================
echo "50"
echo "# Running Third Task." ; sleep 2
# Command for third task goes on this line.
# =================================================================
echo "75"
echo "# Running Fourth Task." ; sleep 2
# Command for fourth task goes on this line.
# =================================================================
echo "99"
echo "# Running Fifth Task." ; sleep 2
# Command for fifth task goes on this line.
# =================================================================
echo "# All finished." ; sleep 2
echo "100"
) |
zenity --progress \
--title="Progress Status" \
--text="First Task." \
--percentage=0 \
--auto-close \
--auto-kill
(( $? != 0 )) && zenity --error --text="Error in zenity command."
exit 0
Если вы перейдете по ссылке на Ubuntu Forums, вы можете прочитать обсуждение этого скрипта. Если после этого у вас еще есть вопросы, пожалуйста, спросите через комментарий ниже, и я сделаю все возможное, чтобы ответить им за вас.