Да, вы можете использовать встроенное в bash арифметическое расширение $ (())
для выполнения простых вычислений.
Для умножения:
echo $(( 6 * 7 ))
Результат
42
И ваш сценарий будет выглядеть так:
#!/ in/bash
for i in 1 2 3 4 5 6 7 8 9
do
for j in 1 2 3 4 5 6 7 8 9
do
if [ $j -le $i ]
then
echo -ne "$i"X"$j"=$(($i * $j)) "\t"
else
echo
break
fi
done
done
echo -ne "\n"
Я кое-что придумал... поскольку моя проблема была связана с изменением USB-устройства, а у меня уже было правило udev выше, я добавил к нему оператор RUN
так:
ACTION=="add", \
SUBSYSTEM=="usb", \
ATTR{idVendor}=="0665", ATTR{idProduct}=="5161", \
SYMLINK+="powerwalkerups", \
MODE="0660", GROUP="nut", \
RUN+="/bin/systemctl restart nut-driver"
Это перезапускает nut-driver не тогда, когда данные становятся несвежими, а когда USB-устройство снова подключается (или как вы называете то, что он делает). Похоже, это решило проблему.