将数据从 for 循环传递到 zenity progress

Pass data from for loop to zenity progress

我有一个 for 循环 for 循环遍历一个包含文件(或更好的文件名)的数组 我想显示一个 zenity 进度条,它显示 for 循环中的当前文件。

使用以下代码,我设法显示了 zenity 进度条,但它只显示 "Running...",直到该数组中没有更多条目。

如何echo zenity 中的文件?

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

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

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

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

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

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