我想以下列方式打印文本
Waiting for completion.
Waiting for completion..
Waiting for completion...
[注意:不超过三个点]
以上内容应该在同一行和循环中。
当循环条件为假时,我想在同一行中得到以下内容:
Waiting for completion... [OK]
如何在bash脚本中实现此目的?
答案 0 :(得分:2)
你应该使用回车。在echo中搜索关于\ r。
的信息 例如,你可能想要这样的东西:f(x)
你需要睡觉,如果你不睡觉,你就不能看到变化的点。
答案 1 :(得分:1)
这个怎么样:
#!/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
,然后打印
同一行中的三个点。当 Control - c 时
然后按下"Waiting for completion... [OK]"
将被打印。
答案 2 :(得分:1)
使用echo的“ -n”开关
下一个回显将在同一行上打印