我使用此脚本来监控 iBeacon 蓝牙设备,它按预期工作。
sudo beacon scan -c
但是我最近将其更改为仅运行几秒钟并将结果输出到文件中,如下所示:
sudo timeout 5 beacon scan -c > result.txt
问题是,这不会输出任何内容,命令中可能存在错误。另外,将错误流写入文件也会给我一个错误。
sudo timeout 5 beacon scan -c &> result.txt
result.txt的内容:
Set scan parameters failed: Input/output error
感觉 bash 正在尝试将 &> result.txt
作为参数应用于 beacon scan
命令。我不太擅长 bash,所以可能有一个简单的解决方案来解决这个问题,但我还没有找到!
最佳答案
一些设计为用 ctrl-c 中断的程序在用 sigterm 终止时表现不一样,这是默认情况下超时将发送的内容。尝试使用选项 -s INT
来让超时发送 sigint。
关于Bash 使用超时将输出写入文件会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28779492/