bash:如何在同一位置回显字符串

时间:2017-06-21 03:20:44

标签: linux bash shell unix echo

我构建了自己的网络服务器,并且我正在尝试进行测试。所以我用bash脚本模拟了许多请求:

i=0
while [ $i -lt 20 ]; do
    echo ''
    echo ''
    echo ''
    echo '============== current time ==============='
    echo $i
    echo '==========================================='
    echo ''
    curl -i http://www.example.com/index?key=abceefgefwe
    i=$((i+1))
done

这很好但我更喜欢将所有echo放在终端上的相同位置 我读过这个:How to show and update echo on same line

所以我为-ne添加echo但它似乎没有按预期工作。
curl的消息仍然可以将echo推开。

这就是我需要的:

============== current time =============== ---\
1   <------ this number keeps updating      ----> the 3 lines stay here
=========================================== ---/
Here is the messages of `curl`, which are showing as normal way

2 个答案:

答案 0 :(得分:3)

还有另一个选项,在写入stdout之前定位光标。

您可以设置xy以满足您的需求。

#!/bin/bash

y=10
x=0
i=0
while [ $i -lt 20 ]; do
    tput cup $y $x
    echo ''
    echo ''
    echo ''
    echo '============== current time ==============='
    echo $i
    echo '==========================================='
    echo ''
    curl -i http://www.example.com/index?key=abceefgefwe
    i=$((i+1))
done

答案 1 :(得分:1)

您可以在while循环的开头添加clear命令。如果这是您的想法,那么这将在每次迭代期间将echo语句保持在屏幕顶部。