将数据从for循环传递到zenity进度

时间:2018-10-24 14:38:22

标签: bash shell for-loop scripting zenity

我在存储文件(或besser文件名)的数组上有一个for循环for循环,我想显示一个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 :(得分:1)

要更改“ Zenity”对话框中显示的文本,必须在消息前加上“#”前缀。 要更改进度条百分比,您只需要发送数字即可。

因此,您可以像这样回显指令:

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

如果您愿意,可以将所有内容放在同一行上,如果您更喜欢这种易读性:

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