Ошибка AWK при запуске от имени конкретного пользователя - PullRequest
0 голосов
/ 04 октября 2018

Я использую YOCTO Linux, и у нас пока есть только один пользователь 'root'.У меня есть скрипт, который запускает процесс при включении питания.

Было требование, чтобы папка журнала создавалась динамически в соответствии с пользователем, и нашел решение (из stackoverflow) для запуска модуля, как показано ниже

/bin/su -c "/usr/local/bin/TestApplication &" - root 

Вышеописанное работает без проблем, и папки тоже создаются, как и ожидалось.

Теперь, когда я добавляю команду 'AWK', чтобы добавить дату и время к выходным данным процесса, я получаю ошибку

Используемая команда

/bin/su -c "/usr/local/bin/TestApplication 2>&1| awk '{ print strftime("%F %T"), $0; fflush(); }' | tee /home/TestApplication.txt &" - root 

Сообщение об ошибке:

awk: cmd. line:1: { print strftime(%F %T),/usr/local/bin/TestApplication_script;fflush();}
awk: cmd. line:1:                  ^ syntax error

Нет ошибок при использовании так:

/usr/local/bin/TestApplication 2>&1| awk '{print strftime("%F %T"),$0;fflush();}' | tee /home/TestApplication.txt &

Так что ошибка возникает, только если я пытаюсь использовать '/ bin / su -c', пожалуйста, помогите.

1 Ответ

0 голосов
/ 04 октября 2018

Вызов su удаляет один слой цитирования оболочки и расширяет $0.awk, вероятно, вызывается с этими аргументами:

awk '{ print strftime(%F %T), /bin/sh; fflush(); }'

Чтобы предотвратить это, вам нужно заключить в кавычки " и $ символы в исходной командной строке, например:

…| awk '{ print strftime(\"%F %T\"), \$0; fflush(); }' |…
...