代码之家  ›  专栏  ›  技术社区  ›  Feroze Mohamed

作为特定用户启动时出现AWK错误

  •  1
  • Feroze Mohamed  · 技术社区  · 6 年前

    我有一个脚本在开机时运行一个进程。

    需要根据用户动态创建日志文件夹,并找到解决方案(从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 回复  |  直到 6 年前
        1
  •  1
  •   Florian Weimer    6 年前

    这个 su $0 . awk可能通过以下参数调用:

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

    为了防止这种情况,你需要引用 " $ 原始命令行中的字符,如下所示:

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