Я новичок в сценариях bash и Linux в целом. Я пытаюсь отправить серию быстрых команд регулятору давления (с разницей в полсекунды), что я обычно делаю с помощью простого прямоугольного импульса с использованием сценариев bash. Однако я не могу понять правильный синтаксис для синусоидального импульса. Я не мог найти способ использовать настоящую синусоидальную функцию, но серия небольших дискретных шагов сработала бы точно так же.
Вот мой сценарий:
#!/bin/bash
Pmax="90"
Pmin="10"
Rcor="7.91" #This converts the pressure setting into the devices scaled range.
declare -a Sinewave20=(0 0.309 0.588 0.809 0.951 1 0.951 0.809 0.580 0.309 0 -0.309 -0.588 -0.809 -0.951 -1 -0.951 -0.809 -0.588 -0.309)
Amplitude=$(( $Pmax-$Pmin ))
Offset=$(( $Pmin+$Amplitude/2 ))
# 6 cycles of Sinewave20 corresponds to 1 min of .1 hz sine wave
for i in {0..6}
do
# Let's send the commands for a 20 pt sine wave
for x in "${!Sinewave20[@]}";
do
Value=$(( $Amplitude*$Rcor*$Sinewave20[x]+{Offset*$Rcor ))
echo -e "SET ${Value}\r" > /dev/ttyUSB1
sleep 0.5
done
done
Это приводит к следующему сообщению об ошибке:
строка 18: 80*7.91*0[x]+{Offset*7.91: синтаксическая ошибка: неверный арифметический оператор (токен ошибки ".91*0[x]+{Offset*7.91")
Я пробовал разные способы написания, но не нашел подходящего. Команда для изменения давления проста:
echo -e "SET 100\r" > /dev/ttyUSB1