Я получаю сообщение "-bash: синтаксическая ошибка рядом с неожиданным токеном `crontab'", когда пытаюсь записать задание cron в crontab одной строкой. (Это для конфигурации запуска в EC2.) Я следую этому руководству здесь.
Это моя команда:
sudo { crontab -l -u ec2-user; echo "* * * * * touch /home/ec2-user/dummy/dummy$ENV"; } | crontab -u ec2-user -
Если я запускаю без sudo, он говорит мне, что у меня «должны быть привилегии для использования -u». Когда я запускаю sudo, я получаю «bash: синтаксическая ошибка рядом с неожиданным токеном `}'»
Я уверен, что у меня неправильный синтаксис с sudo, но я не уверен, где именно.
sudo
может запускать только внешние команды, а не синтаксис оболочки, такой как группы фигурных скобок (или циклы/функции/операторы if/и т. д.). Используйте его для отдельных команд, для которых вам нужны специальные привилегии:
{ sudo crontab -l -u ec2-user; echo "* * * * * touch /home/ec2-user/dummy/dummy$ENV"; } | sudo crontab -u ec2-user -
Другой способ добиться желаемого:
sudo bash -c "{ crontab -l -u ec2-user; echo '* * * * * touch /home/ec2-user/dummy/dummy$ENV'; } | crontab -u ec2-user -"
Таким образом, вам нужно указать sudo
только один раз.
@Brandon: Попробуйте поменять местами одинарные и двойные кавычки и дайте мне знать, если это сработает.
Это сделало это. Спасибо!
@Brandon: я обновил свой ответ, чтобы отразить ваши результаты. Спасибо, что дал мне знать.
Так что это работает, но не получает значение для $ENV. Есть идеи, почему?