コマンドのリアルタイム値の変更を表示する Bash スクリプト

コマンドのリアルタイム値の変更を表示する Bash スクリプト

Linuxシステムには、さまざまなセンサー状態の値を提供する一連のコマンドがあります。

これらのコマンドの呼び出しは次のようになります。

$ command1
5647
$ command2
76
$ command3
8754

値はリアルタイムで変更され、いずれかの値の状態を確認したいときはいつでもコマンドを再起動する必要があります。 。

私の目標は、次のようにこれらのコマンドを呼び出して値を更新されたままにする(リアルタイムで非同期またはx秒ごとに値を更新する)単純なBashスクリプトを作成することです。

$ ./myScript.sh
command1: x
command2: y
command3: z
command4: v

そのうち、、、xおよびy値が変更されますzv

Bashでこれは簡単で効率的に達成できますか?それともPythonなどの他の言語を使用する必要がありますか?

追加情報で更新されました。

私の現在のスクリプトは次のとおりです。

#!/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

私の出力には迷惑な点滅が伴います。

ここに画像の説明を入力してください。

ベストアンサー1

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

おすすめ記事