在Linux机器上,我有一系列提供不同传感器状态数值的命令。
这些命令的调用类似于以下内容:
$ command1
5647
$ command2
76
$ command3
8754这些值是实时变化的,每次我想检查其中一个值的状态时,我必须重新启动命令.这对我没有任何好处,因为我需要双手来操纵硬件。
我的目标是创建一个简单的Bash脚本,该脚本调用这些命令并保持值更新(实时更新或每x秒刷新一次),如下所示:
$ ./myScript.sh
command1: x
command2: y
command3: z
command4: v其中x、y、z和v是不断变化的值。
巴什允许这简单有效吗?或者我应该选择用另一种语言,比如Python?
提供更多信息的UPDATE:
我现在的剧本是:
#!/bin/bash
echo "Célula calibrada: " $(npe ?AI1)
echo "Anemómetro: " $(npe ?AI2)
echo "Célula temperatura: " $(npe ?AI3)
echo "Célula temperatura: " $(npe ?AI4)npe是一个返回数值的示例命令。我希望有这样的输出:

我使用命令watch -n x ./myScript.sh获得的输出,其中x是秒的刷新值。如果我像这样编辑我的脚本:
#!/bin/bash
while sleep 1; do
clear; # added to keep the information in the same line
echo "Célula calibrada: " $(npe ?AI1);
echo "Anemómetro: " $(npe ?AI2);
echo "Célula temperatura: " $(npe ?AI3);
echo "Célula temperatura: " $(npe ?AI4);
done我用一个恼人的闪光灯得到我的输出:

发布于 2019-11-14 09:30:47
在bash中实现实时解决方案可能比较棘手。
有许多方法可以在X秒内运行一次脚本,您可以使用watch。我想您已经有可用的myScript.sh了。用所需的秒数替换X。
watch -n X ./myScript.shwhile sleep X; do ./myScript.sh; done upd.为了模拟监视,您可能需要在迭代之间清除屏幕。在脚本中,它看起来是这样的:而睡眠X;清除;command1;command2;完成发布于 2019-11-14 15:47:57
您可以使用tput cup 0 0将光标发送到屏幕的左上方。clear一次。
#!/bin/bash
clear
while sleep 1; do
tput cup 0 0
printf "%21s %6d \n" \
"Célula calibrada: " $(npe ?AI1) \
"Anemómetro: " $(npe ?AI2) \
"Célula temperatura: " $(npe ?AI3) \
"Célula temperatura: " $(npe ?AI4)
done发布于 2019-11-14 22:49:15
我假设闪烁是因为您的命令需要花时间返回它们的值。这是我通常的解决办法:
cmds(){
echo "Célula calibrada: " $(npe ?AI1);
echo "Anemómetro: " $(npe ?AI2);
echo "Célula temperatura: " $(npe ?AI3);
echo "Célula temperatura: " $(npe ?AI4);
}
while true; do
out="$(cmds)"
clear
echo "$out"
sleep 1
done我们的想法是在最后可能的时刻清除屏幕。
https://unix.stackexchange.com/questions/552125
复制相似问题