gpt4 book ai didi

bash - 测试并记录终端输出

转载 作者:行者123 更新时间:2023-11-29 09:31:52 25 4
gpt4 key购买 nike

我正在使用以下命令行通过 bluetoothctl 工具向我的设备 Controller 发送命令。

#!/bin/sh
{ sleep 1 && echo -e 'power on \n' && sleep 1;} | bluetoothctl

在终端返回:

root@snp:~# ./bt.sh 
[NEW] Controller 01:02:03:04:05:C3 snp [default]
[NEW] Device 98:0D:2E:E5:14:81 HTC
Changing power on succeeded
[CHG] Controller 01:02:03:04:05:C3 Powered: yes
[DEL] Controller 01:02:03:04:05:C3 snp [default]

我想减少和管理返回的消息数量。基本上,我想在屏幕上显示并存储在日志文件中:

Changing power on succeeded
[CHG] Controller 01:02:03:04:05:C3 Powered: yes

我进入

{ sleep 1 && echo -e 'power on \n' && sleep 1;} | bluetoothctl | grep -E "Changing|[CHG]" 2>&1 | tee log.txt

但是我得到了,

root@snp:~# ./bt.sh 
[NEW] Controller 01:02:03:04:05:C3 snp [default]
[NEW] Device 01:02:03:04:05:C3 HTC
Changing power on succeeded
[DEL] Controller 01:02:03:04:05:C3 snp [default]

我错在哪里?

此外,是否可以通过条件测试来测试 Powered = yes 或 not,并且所有的东西都在同一行中?

--------------------------------

编辑 n°1 :

确实,状态消息没有定向到标准错误,2>&1 没用。

但是,我通过以下方式尝试了您的提议:

{ sleep 1 && echo -e 'power on \n' && sleep 1;} | bluetoothctl | grep -E 'Changing|\[CHG]' 

总是返回

root@snp:~# ./bt.sh 
Changing power on succeeded

代替

root@snp:~# ./bt.sh 
Changing power on succeeded
[CHG] Controller 01:02:03:04:05:C3 Powered: yes

最佳答案

正则表达式 [CHG] 是一个匹配 CHG 中的任何一个的字符类>。如果您想从字面上匹配左方括号,则必须将其转义。

grep -E 'Changing|\[CHG]'

此外,您可能想检查状态消息是否被定向到标准错误。如果是,试试

... | bluetoothctl 2>&1 | grep ...

您的 grep 2>&1 重定向似乎没有任何用处。

关于bash - 测试并记录终端输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27380056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com