递归地将回显值替换为Unix中先前回显的值

时间:2015-06-05 11:29:25

标签: linux bash shell unix

我想打印如下的循环

a=0
while [ $a -lt 100 ]
do
   echo ${a}%
   a=`expr $a + 1`
   sleep 1
done

按以下方式抛出输出

1%
2%
3%
4%
...

但是我希望将1%的运行值2%替换为100%等,直到同一行中的fc.showSaveDialog(fc);

2 个答案:

答案 0 :(得分:2)

您可以使用printf打印退格字符\b以删除已打印的字符

printf "\b%.0s" {1..5}
  • 这将打印5退格区,光标将移动到该行的开头。

    在下一次迭代中,echo将产生新的数字

示例

while [ $a -lt 100 ]
do    
    echo -n ${a}%;    
    a=`expr $a + 1`

    #This will remove the already printed value from the screen
    printf "\b%.0s" {1..5}
    sleep 1
done

您可以echo回车

echo -e "\r"

while [ $a -lt 100 ]
do    
    echo -n ${a}%;    
    a=`expr $a + 1`

    #This will remove the already printed value from the screen
    echo -e "\r"
    sleep 1
done

答案 1 :(得分:0)

function a(){
  if [[ $1 -le 100 ]]; then
    echo $1%
    b=`expr $1 + 1`
    sleep 1
    clear
    a $b
  fi
}
a 0

我认为这是你想要的......在同一行中使用递归计数0到100