Вы также можете воспользоваться такими операторами сравнения bash:
if [ $arg -eq $arg -a $arg -ge 0 ] 2>/dev/null ;then
echo "accepted"
else
echo "not accepted"
fi
Хитрость в том, что если вы сравните с -eq два нечисловых аргумента, bash вызовет ошибку (которую мы отправили в / dev / null).
потому что `...` эквивалентен $ (...), который является подоболочкой. изменение переменных в подоболочке теряется при закрытии подоболочки.
Вы можете увеличить переменную следующим образом:
a=1
((a++))
echo $a
2
Что больше похоже на увеличение в стиле C, а не:
let a++
См. Ответ Ипора Сирцера что касается , почему ваш метод не работает!