Запишите количество раз, условие является истинным ударом/сценарием оболочки использования

Я пытался записать сценарий оболочки в среде Unix, и мое требование - то, если мое условие удовлетворено затем, что это должно записать, сколько раз удовлетворено мое условие

например, в ниже кода, когда значение VAR равняется 1 затем, оно должно записать, сколько раз значение равняется 1, и продолжайте записывать число в некотором определенном файле в определенном пути

VAR = /sys/ccc/sss

if [ "$VAR" -eq 1 ];

then /*need logic*/

fi

быть ясным, если работал выше логики 100 раз и моего условия, верно в течение 95 раз затем, как записать логику, таким образом, что код должен создать переменную, названную condition_yes, который имеет номер 95 в нем в конце и переменной, названной condition_no, который имеет номер 5 в init, Любая идея или подсказка ценятся

Требование в ореховой скорлупе, которая - Мое требование, когда я получаю действительный сигнал от внешнего источника переменная в моем sysfs, расположенном на моем экю в/sys/bus/drive/prd, будет установлено на 1 и если не это будет установлено на 0, таким образом, мое требование будет мной, continuosly отправляют сигнал от внешнего источника до моего экю в течение приблизительно 1 часа, и в конце я хочу общее количество того, сколько раз мой сигнал хорош, и varable выше установлено на 1

0
задан 4 March 2020 в 01:41

1 ответ

Если значение 1 или 0 присвоено файлу /sys/bus/drive/prd, можно считать его с 'кошкой' и присвоить переменную ему.

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

и затем считайте нули и

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

Вы ничего не объяснили о сигнале, таким образом, я не пишу кода об этом.

Вместо этого я сделал маленький демонстрационный сценарий оболочки, который может помочь Вам видеть, как сделать некоторое время цикл для подсчета 'хороших' и 'плохих' нажатий клавиш и как записать результат, когда измерение закончено.

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

Удача с Вашим собственным сценарием оболочки :-)

0
ответ дан 17 March 2020 в 00:10

Другие вопросы по тегам:

Похожие вопросы: