我试图在 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 好运 :-)