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,因为我仍然希望看到前面的命令行。如果您迭代数组的键,但除了索引数组外,从不使用该键,则表示您只想迭代数组值。