Задать вопрос
@bychok300

Как поправить shell скрипт?

пытаюсь создать лог с текущей датой и запустить питон скрипт в этот лог
не могу понять правильно ли я вызываю переменную _file?
#!/bin/sh

_now=$(date +"%d-%m-%Y-%H-%m")
_file="/home/folder/logs/log_$_now.txt"
sudo touch $_file

cd /home/folder/logs
sudo python3 handleMouseEvent.py > ${_file}
  • Вопрос задан
  • 202 просмотра
Подписаться 1 Оценить 12 комментариев
Решения вопроса 1
kashamalasha
@kashamalasha
$ ls -ld /home/folder/logs
вернет скорее всего что-то навроде:
drw-r--r-- 2 root root ...
дайте права на запись в папку всем пользователям:
$ sudo chmod 777 /home/folder/logs
и выкиньте sudo из скрипта:
#!/bin/sh

NOW=$(date +"%d-%m-%Y-%H-%m")
PYFILE="/home/folder/logs/handleMouseEvent.py"
LOGFILE="/home/folder/logs/log_$NOW.txt"

python3 $PYFILE > $LOGFILE

должно работать.

P.S. changedir тоже лучше не использовать
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
Зачем вам нужен sudo для создания файла и запуска питона?
Если нужен sudo - запускайте весь скрипт, то есть:

#!/bin/sh

OUTFILE="/home/folder/logs/log_$(date +"%d-%m-%Y-%H-%m").txt"
cd /home/folder/logs
python3 handleMouseEvent.py > ${OUTFILE}


и затем
sudo myscript.sh

Во-вторых, вы делаете перенаправление > а перед этим делаете touch - зачем? перенаправление и так создаст нужный вам файл. Главное, чтобы у юзера, от которого вы запускаете (при sudo - у рута) были права записи в указанной папке.

P.S. В шелл принято именовать переменные в верхнем регистре.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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