这是我到目前为止所做的,它的工作原理是它给出了一个标尺,我可以将它传递给我想要的许多命令。问题是$COMMAND
从未在shell上实际执行过。
#!/bin/bash
progressBar() {
declare TODO=("${@}")
NUM_TODO=${#TODO[*]}
STEP=$((100/NUM_TODO))
IDX=0
COUNTER=0
(
while :
do
cat <<EOF
XXX
$COUNTER
${TODO[$IDX]}
XXX
EOF
COMMAND="${TODO[$IDX]} &>/dev/null"
[[ $NUM_TODO -lt $IDX ]] && $COMMAND
(( IDX+=1 ))
(( COUNTER+=STEP ))
[ $COUNTER -gt 100 ] && break
sleep 1
done
) |
whiptail --title "Please wait..." --gauge "Please wait..." 6 70 0
}
progressBar \
"touch bla" \
"cp bla bla-`date +%Y%m%d%H%M`.backup"
答案 0 :(得分:1)
我认为[[$ NUM_TODO -lt $ IDX]]是错误的,应该是$ IDX -lt $ NUM_TODO。