Проверьте приведенную ниже ссылку, чтобы убедиться, что значение аргумента является целым числом.
https://stackoverflow.com/questions/2210349/test-whether-string-is-a-valid-integer
и чтобы проверить отсутствие переменной, скажем, вы присваиваете свой первый аргумент переменной
var=$1
if [ ! -z "$var" ]; then
echo "value is present"
else
echo "value is not present"
fi
Должно быть, я проглядел очевидный ответ.
Добавление в sudoers "исходный" и целевой пользователь (пользователя, от имени которого должна выполняться команда )с указанием пути к программе. В моем случае используется группа вместо пользователя.
www-data ALL = (mytargetuser) NOPASSWD: /path/to/my/program
Решение, описанное в этом ответе:https://unix.stackexchange.com/a/13058