Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将行打印到标准输出并删除它们_Bash_Stdout - Fatal编程技术网

Bash 将行打印到标准输出并删除它们

Bash 将行打印到标准输出并删除它们,bash,stdout,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}

我有一个交互式脚本,我想打印一些行,用空行覆盖它们,然后再写一些:

    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行以前的输出

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


谢谢

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

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

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

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

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

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

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

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

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

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

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


在此之后,您可以使用
$lines
来知道要覆盖多少行。

是的,考虑到了这一点,但它将批量打印
$OUTPUT
。显然,脚本不仅仅是空谈:)。也许可以用一个T形三通或一些管道来完成它?你可以这样做每一位输出,并在进行时将行相加,以了解需要清除的行数。我正在尝试用类似的方法来完成:
echo blah | tee>(wc-c | read output)
。但它不起作用:(您正在子shell中读取变量,它不会影响原始shell。这可能就是为什么……无论如何,我也在寻找保存ssh命令的方法,所以拆分它,并计算每个命令对我当前的需要没有多大帮助。是的,我想到了这一点,但它将批量打印
$OUTPUT
。显然,脚本不仅仅是blah:)。也许用一个T形三通或一些管道来做?你可以像这样做每一点输出,并在进行时把行加起来,以知道要清除多少行。我正试图用这样的方法来做:
echo blah | tee>(wc-c | read output)
。但它不起作用:(您正在子shell中读取变量,它不会影响原始shell。这可能就是为什么……无论如何,我也在寻找保存ssh命令的方法,所以拆分它,并计算每个命令对我当前的需要没有多大帮助。是的,我想到了这一点,但它将批量打印
$OUTPUT
。显然,脚本不仅仅是blah:)。也许用一个T形三通或一些管道来做?你可以像这样做每一点输出,并在进行时把行加起来,以知道要清除多少行。我正试图用这样的方法来做:
echo blah | tee>(wc-c | read output)
。但它不起作用:(您正在子shell中读取变量,它不会影响原始shell。这可能就是为什么……无论如何,我也在寻找保存ssh命令的方法,所以拆分它,并计算每个命令对我当前的需要没有多大帮助。是的,我想到了这一点,但它将批量打印
$OUTPUT
。显然,脚本不仅仅是blah:)。也许用一个T形三通或一些管道来做?你可以像这样做每一点输出,并在进行时把行加起来,以知道要清除多少行。我正试图用这样的方法来做:
echo blah | tee>(wc-c | read output)
。但它不起作用:(您正在子shell中读取变量,它不会影响原始shell。这可能就是为什么……无论如何,我也在寻找保存ssh命令的方法,所以拆分它,并计算每个命令对我当前的需要没有多大帮助。老实说,我从来都不理解这种需要。如果您想使用面向屏幕的脚本,下面是
对话框
软件包。如果面向行,足以打印
\r
,如果是多行,我只需使用
清除
并以清晰的屏幕开始…这样的寻址值得一玩吗?a.为了好玩和知识。b.我无法安装任何东西。我也不希望使用清除,因为如果需要,我仍然希望看到前面的命令行在数组的键上执行操作,但除了索引数组外,永远不要使用该键,这是一个你只想在数组值上迭代的标志。老实说,我从来不理解这种需要。如果你想使用面向屏幕的脚本,这里是
对话框
包。如果是面向行的,就足以打印
\r
,如果是多行的只需使用
clear
并从一个清晰的屏幕开始…这样的寻址值得玩吗?a.为了好玩和知识。b.我不能安装任何东西。我也不希望使用clear,因为如果你迭代数组的键,但除了索引数组外,永远不要使用该键,我仍然希望看到前面的命令行y、 这表明你只是想迭代数组值。老实说,我从来不理解这种需要。如果你想使用面向屏幕的脚本,这里是
对话框
包。如果是面向行的,足够打印
\r
,如果是多行的,我只需要使用
清除
并从一个清晰的屏幕开始…这是正确的值得玩这样的寻址吗?a.为了好玩和知识。b.我不能安装任何东西。我也不希望使用clear,因为我仍然希望看到前面的命令行。如果您迭代数组的键,但除了索引数组之外,从不使用该键,这是一个您只想迭代数组值的标志老实说,我从来不理解这种需求。如果你想使用面向屏幕的脚本,这里是
对话框
包。如果是面向行的,足够打印
\r
,如果是多行的,我只需要使用
清除
并从清晰的屏幕开始…这样的寻址值得玩吗?a.为了乐趣和知识。b.我不能安装l任何内容。我也不希望使用clear,因为我仍然希望看到前面的命令行。如果您迭代数组的键,但除了索引数组外,从不使用该键,则表示您只想迭代数组值。