任意数量的shell命令的鞭尾计

时间:2017-03-19 17:44:21

标签: bash shell

这是我到目前为止所做的,它的工作原理是它给出了一个标尺,我可以将它传递给我想要的许多命令。问题是$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"

1 个答案:

答案 0 :(得分:1)

我认为[[$ NUM_TODO -lt $ IDX]]是错误的,应该是$ IDX -lt $ NUM_TODO。