以特定用户身份启动时出现 AWK 错误

AWK error when starting as a particular user

我正在使用 YOCTO Linux,目前我们只有一个用户 'root'。 我有一个脚本,运行 是开机时的一个进程。

要求根据用户动态创建日志文件夹,并找到 运行 模块的解决方案(来自 Whosebug),如下所示

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

以上工作没有问题,文件夹也按预期创建。

现在,当我添加 'AWK' 命令以将日期和时间添加到进程输出时,出现错误

使用的命令

/bin/su -c "/usr/local/bin/TestApplication 2>&1| awk '{ print strftime("%F %T"), [=11=]; 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"),[=13=];fflush();}' | tee /home/TestApplication.txt &

所以只有当我尝试使用'/bin/su -c'时才会出现错误,请帮忙。

su 调用删除了一层 shell 引用,并扩展了 [=13=]。可能使用这些参数调用 awk:

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

为防止出现这种情况,您需要在原始命令行中引用 "$ 字符,如下所示:

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