Передача удара параметры командной строки, содержащие #

Ваш сценарий работает и перестал работать. Используйте полные пути для своего сценария (например, "/home/yourid/bin/dbCron_daily_backup.sh") и редактируйте/пересматривайте Ваш сценарий для использования полных путей для всех команд. Вероятно, у Вас есть проблема среды, которая могла быть решена путем определения источника соответствующей настройки среды наверху сценария.

Сделайте себе одолжение и создайте регистрирующийся каталог, таким образом, можно наблюдать/контролировать cronjob поведение,

mkdir /home/yourid/log/

Вот идиома, которую можно использовать для входа crontab поведения (предполагающий, что у Вас есть место для входа работы); это получит stdout и stderr,

#periodic db work,
*/5 * * * * (cd /home/yourid/; bin/dbCron.sh) 2>&1 >> /home/yourid/log/dbcron.log
#db daily backup
00 09 * * * (cd /home/yourid; bin/dbCron_daily_backup.sh) 2>&1 >> /home/yourid/log/dbdailybackup.log
#db nightly cleanup
55 23 * * * (cd /home/yourid/; bin/backup_logs.sh && bin/clear_logs.sh) 2>&1 >> /home/yourid/log/dbnightlycleanup.log

#log system health,
0 * * * * (cd /opt/myapp/;util/DiskCheck.pl) 2>&1 >> /home/yourid/log/health.log

Вы могли бы хотеть распечатать сообщения в запуске и конце Ваших сценариев с датой/временем, так, чтобы можно было отметить прогресс, например,

#!/bin/bash
echo "begin $0 " `/bin/date +%y%m%d%H%M%S`
echo do stuff
echo "done $0 " `/bin/date +%y%m%d%H%M%S`
2
14.04.2015, 04:21
2 ответа

Это невозможно, если вы используете Bash в качестве оболочки (но как сказано выше, вы можете избежать его, или вы можете поставить его в кавычки).

Однако он будет работать нормально, если вы начнете свою программу из CSH, например.

1
27.01.2020, 21:56

# - символ комментариев. Если вы не хотите, чтобы это было, вам нужно либо избежать его, либо цитировать его.

echo 2 \# 2
echo 2 '#' 2
4
27.01.2020, 21:56

Теги

Похожие вопросы