Передача данных из цикла for в прогресс zenity - PullRequest
0 голосов
/ 24 октября 2018

У меня есть цикл for для цикла над массивом, который содержит файлы (или имена файлов besser). Я хочу отобразить индикатор выполнения zenity, который показывает текущий файл в цикле for.

С помощью следующего кода мне удалось отобразить индикатор выполнения zenity, но он показывает только "Running...", пока в нем больше нет записей.

Как я могу echo файлыв зените?

if [ ${#FILES[@]} != 0 ] || die "No files to download"
then
(
    for i in ${FILES[@]}
    do
        ssh -i $ID $SSH_OPT $HOST "scan Downloads/'$i'" && OK=true
        if [ ! -v ${OK+x} ]
        then
            echo "Downloading $i"
            scp $SSH_OPT $USER@$HOST:/home/$USER/Downloads/$i /home/$USER/Downloads/
            ssh -i $ID $SSH_OPT $HOST "rm -f Downloads/$i"
        else
            echo "$i contains a virus."
            ssh -i $ID $SSH_OPT $HOST "rm -f Downloads/$i"
        fi
done
echo "100"
) | zenity --progress \
     --title="Download from $HOST" \
     --percentage=0
fi

1 Ответ

0 голосов
/ 24 октября 2018

Чтобы изменить текст, отображаемый в диалоговом окне zenity, вы должны поставить перед сообщением префикс «#».Чтобы изменить процент индикатора выполнения, вам просто нужно отправить число.

Таким образом, вы можете повторить инструкцию следующим образом:

    then
        echo "# Downloading ..."
        echo "$i"

Если вы хотите, вы можете поставить все на одно и то желиния, если вы предпочитаете эту разборчивость:

        echo -e "# Downloading ...\n$i"
...