将打印行打印到STDOUT并删除它们

时间:2014-09-15 14:52:43

标签: bash stdout

我有一个交互式脚本,我想打印一些行,用空行覆盖它们并写下更多:

    for host in "${!HOSTS[@]}"
    do
            echo "Running on ${HOSTS[$host]}:"
            ssh ${HOSTS[host]} "echo blah ; echo blah"
            echo -e "\e[4A"
            printf " %$((COLUMNS-1)).s\n" {1..3}
            echo -e "\e[4A"
    done

这是基于我实际上有3行先前的输出。

有没有办法让它更有活力?找出打印了多少行并完全覆盖了那些?

由于

1 个答案:

答案 0 :(得分:3)

将输出放在变量中,并计算变量中的行数:

OUTPUT=$(ssh ${HOSTS[host]} "echo blah ; echo blah")
lines=$(echo "$OUTPUT" | wc -l) # count lines
echo "$OUTPUT" # echo it

在此之后,您可以使用$lines来了解要覆盖的行数。