我有以下代碼:
errorlevel=-1
{ wget "$1" -O "$2" 2>&1; errorlevel=$?; } |\
sed -u 's/^[a-zA-Z\-].*//; s/.* \{1,2\}\([0-9]\{1,3\}\)%.*/\1\n#Downloading... \1%/; s/^20[0-9][0-9].*/#Done./' | \
dlg --progress --percentage=0 --title=Download dialog --text=Starting... --auto-close --auto-kill --button=gtk-cancel
但是,無論什麼wget
回報的,我總是在$errorlevel
得到-1
。看起來像$errorlevel
根本沒有修改該聲明。
我在哪裏做錯了,我該如何解決這個問題?
(PIPESTATUS
或set -o pipefail
等沒有在此情況下使用,否則我將無法告訴用戶是否已經取消了該操作或不(dlg
調用GUI)。)
''PIPESTATUS''或'set -o pipefail'等在這種情況下不可用,否則我將無法判斷用戶是否取消了操作('dlg'調用GUI)。 – user2064000
@ user2064000爲什麼?你想要'wget'的返回碼和'$ {PIPESTATUS [0]}'給你完全的。 'false |真正; echo「$ {PIPESTATUS [*]}」'=>'1 0','true |假;回聲「$ {PIPESTATUS [*]}」'=>'0 1'。 –