1

我写了一个简单的脚本来 wget 和 zenity 取消:

#!/bin/bash
((
   wget http://d3qnbzt7ix5jlv.cloudfront.net/ubuntu-12.04-desktop-i386.iso & export PID=$$
   wait $PID
   export YES=$?
)&) | zenity --progress --pulsate --auto-close
if [ $? -eq 1 ]; then
  kill $PID
fi
if [ "$YES" = "0" ]; then
   zenity --info
elif [ "$YES" = "1" ]; then
   zenity --error
fi

kill 看不到进程$PID。Zenity 不显示最终窗口 ($YES)。为什么?

4

1 回答 1

0

这不完全是一个答案,但评论会使代码片段乱码:


/usr/bin/userinstall-wget

#!/bin/sh
# a wget wrapper to get these under a separate shell *and* progname

[ -n "$1" -a -n "$2" ] || exit 1

LANG=C \
wget -O "$1" --content-disposition --progress=bar:force:noscroll "$2" 2>&1 \
| stdbuf -i0 -o0 -e0 tr '>' '\n' \
| stdbuf -i0 -o0 -e0 sed -rn 's/^.*\<([0-9]+)%\[.*$/\1/p'

# NB: those coughing at this particular killall are welcome with patches
download() {
        userinstall-wget "$outfile" "$url" | (
                trap 'killall userinstall-wget' HUP
                zenity --progress --time-remaining --auto-close --auto-kill \
                        --text="Wait please..." \
                        --title="Downloading file"
        )
}

这些已作为 ALT Linux 的 userinstall 包装脚本的一部分组合在一起。

高温高压

PS:--progress=bar:force:noscroll使用较旧的 wget丢弃

于 2015-10-28T15:04:02.597 回答