我一直在尝试同时打印一个变量,用于假装自动化流程的脚本,内容就是这个的输出
do
out= sed "s/Read/\n/g" /tmp/Air/test.txt | tail -1 test.txt | grep ARP
echo -n "$out"
sleep 1
done
所以我把它放在一个while循环中
echo -ne
我在这里阅读了其他问题,我尝试使用echo -ne "$out" \r
,printf "\r"
,printf "%s"
或echo -n
这样的不同选项,没有人没有运气,所有其他例子都不要没有变量来打印反制系统变量
更新
似乎$out
重复out="this is a test"
在同一行,如果echo -n
102415 packets (got 5 ARP requests and 15438 ACKs), sent 37085 packets...(499 pps)
的输出是“这是一个测试,这是一个测试这是一个测试,这是一个测试....“也许我错过了一些选择?
更新2
对不起小姐理解也许我不是很清楚,但我想要的是用$ out的值覆盖同一行,$ out的源是与脚本一起执行的aireplay-ng命令的输出我用
获得输出输出是这样的
#!/bin/bash
for pc in $(seq 1 100); do
echo -ne "$pc%\033[0K\r"
sleep 1
done
但ARP请求的数量不断变化
此代码例如在同一行中使用echo -ne和overwrite
Bitmap
这个输出就像一个百分比指标,显示“10%”,而不是“1%2%3%4%5%..”在同一行,我已经尝试过这样但没有运气
答案 0 :(得分:0)
首先,您要将错误的bash命令值赋值给变量。
out=$(sed "s/Read/\n/g" /tmp/Air/test.txt | tail -1 test.txt | grep ARP)
然后你可以在写一行时将所有输出打印出来: -
echo -n $out
答案 1 :(得分:0)
如果您尝试执行sed请使用
`sed "s/Read/\n/g" /tmp/Air/test.txt | tail -1 test.txt | grep ARP`
答案 2 :(得分:0)
您问题的最新附录就像您错误传达了您的意图:this is a test this is a test this is a test
是您的问题的简单读数表明您要求(打印{{1}毕竟,在一个没有换行符的循环中反复出现,可以预期什么都不做);为什么你会在一个上下文中描述这个,这听起来像一个bug就是令人惊讶的。
如果您想将光标发送回当前行的开头并覆盖该行,则可能如下所示:
this is a test
...打印你的字符串,用空格填充80个字符,然后将光标返回到行的开头,这样你下一个写的东西就会覆盖那个字符串。
当然,如果您打印该行然后返回到shell提示符,则提示符将从同一行的开头开始并覆盖文本,因此请务必使用#!/bin/bash
# ^^^^ not /bin/sh; this enables bash extensions
# ask the shell to keep $COLUMNS up-to-date
shopt -s checkwinsize
# defaults to 80-character terminal width, but uses $COLUMNS if available
printf "%-${COLUMNS:-80}s\r" "$out"`
进行跟进。 / p>