我想打印以下方式文本如何在同一行打印在bash脚本进度
Waiting for completion.
Waiting for completion..
Waiting for completion...
[注:不超过三个点]
以上应在同一行和一个循环中。
当循环条件是假的我想在同一行下面还有:
Waiting for completion... [OK]
如何在bash脚本实现这一目标?
我想打印以下方式文本如何在同一行打印在bash脚本进度
Waiting for completion.
Waiting for completion..
Waiting for completion...
[注:不超过三个点]
以上应在同一行和一个循环中。
当循环条件是假的我想在同一行下面还有:
Waiting for completion... [OK]
如何在bash脚本实现这一目标?
您应该使用回车。在有关\ r的回声中搜索信息。
例如也许你想是这样的:
#!/bin/bash
while [ 3 -gt 2 ];
do
echo -n -e 'Esperando.\r'
sleep 1
echo -n -e 'Esperando..\r'
sleep 1
echo -n -e 'Esperando...\r'
sleep 1
echo -n -e ' \r'
done
你需要,如果你不睡觉,你将无法观看变化点睡觉的原因。
正在等待完成...在第三次迭代,然后没有发生变化 –
Okey,抱歉,我不理解你,也许这就是你需要的。看我的答案。 – Serizba
如何:
#!/usr/bin/env bash
trap ctrl_c INT
ctrl_c()
{
flag=1
}
dots()
{
if [ "$1" -eq 1 ]
then
echo .
fi
if [ "$1" -eq 2 ]
then
echo ..
fi
if [ "$1" -eq 3 ]
then
echo ...
fi
}
flag=0
dots_count=1
while [ "$flag" -eq 0 ]
do
if [ "$dots_count" -eq 4 ]
then
dots_count=1
fi
printf "\r%sWaiting for completion%s" "$(tput el)" "$(dots "$dots_count")"
dots_count=$((dots_count + 1))
sleep 1
done
printf "\r%sWaiting for completion... [OK]\n" "$(tput el)"
它会不断地打印,然后在同一行最多 三个点Waiting for completion
。当控制 - c是 按下然后"Waiting for completion... [OK]"
将被打印。
这是另一个很好的解决方案。为此+1。 –
你是如何运行脚本?决定执行完成的条件是什么? – Inian