使用 bash/shell 脚本记下条件成立的次数

使用 bash/shell 脚本记下条件成立的次数

我试图在 unix 环境中编写一个 shell 脚本,我的要求是,如果我的条件得到满足,那么它应该记录下我的条件得到满足的次数

例如在下面的代码中,当 VAR 值为 1 时,它应该记下值为 1 的次数,并在某个路径下的特定文件中不断记录这个数字

VAR = /sys/ccc/sss

if [ "$VAR" -eq 1 ];

then /*need logic*/

fi

要清楚的是,如果运行了 100 次以上的逻辑,而我的条件有 95 次为真,那么如何编写一个逻辑,使得代码应该创建一个名为 condition_yes 的变量,该变量在末尾有数字 95,并且创建一个名为 condition_no 的变量,该变量在 init 中有数字 5。任何想法或提示都值得赞赏

要求概要 我的要求是当我从外部源获得有效信号时,位于我的 ecu 上的 sysfs 中的一个变量/系统/总线/驱动器/prd将被设置为 1,如果不是,它将被设置为 0,所以我的要求是我连续从外部源向我的 ecu 发送信号约 1 小时,最后我想要我的信号良好的总次数,上面的变量设置为 1

答案1

如果为文件分配了值 1 或 0 /sys/bus/drive/prd,则可以使用“cat”读取它并为其分配一个变量。

var=$(cat /sys/bus/drive/prd)

然后数一下零和一

...
if [ "$var" == "1" ]
then
  good=$((good+1))
elif [ "$var" == "0" ]
  bad=$((bad+1))
else
  echo "unexpected value"
fi
...

您没有解释有关信号的任何内容,因此我没有编写任何有关该信号的代码。

相反,我制作了一个小型演示 shellscript,它可以帮助您了解如何制作一个 while 循环来计算“好”和“坏”的击键以及如何在测量完成时写入结果。

#!/bin/bash

echo "siganl: as demo, let a key-stroke be the signal"
echo "value:  as demo, a digit key is good=1 other keys are bad=0"
echo "quit the loop with 'q'"
good=0
bad=0
re='^[0-9]+$'
while true
do
 read -sn1 ans
 if [[ "$ans" == "q" ]]
 then
  echo ""
  echo "good=$good"
  echo "bad=$bad"
  exit
 elif [[ "$ans" =~ $re ]]
 then
  echo -n '1'
  good=$((good+1))
 else
  echo -n '0'
  bad=$((bad+1))
 fi
done

祝你的 shellscript 好运 :-)

相关内容