С помощью питона можно получить точность уровня микросекунды, например.
Вы можете попробовать это, как упоминалось в комментариях, но обратите внимание на пробелы.
#!/bin/bash
if [[ "$1" == "on" && $2 -eq 1 ]]; then
echo $1 $2
else
echo failure
fi
Двойные скобки предназначены для числовых операций; Квадратные скобки []
действуют как булевые контексты. Двойные квадратные кронштейны не портативны и будут потерпеть неудачу в Dash
и другие очень минимальные оболочки. На самом деле [
[ - это утилита встроенной оболочки / POSIX, которая выполняет логические операции, поэтому вам нужны пробелы вокруг них. Эта ссылка имеет гораздо более подробно на тему, если вам интересно.
Если бы я написал это, это будет больше похоже на это:
#!/bin/sh
# check we got the expected number of arguments
if [ "$#" -ne 2 ]; then
echo USAGE ...
exit
fi
if [ "x$1" = "xon" ] && [ "$2" -eq 1 ]; then
echo "$1 $2"
else
echo failure
fi
Concatenation «X» - это хорошая практика, чтобы предотвратить рассыпление пустых строк.