我正在尝试在nodejs的子进程exec中运行以下命令,但它失败了:
+-----------------+-----------------+-----------------+
| Time|TimeStamp | mean |
+-----------------+-----------------+-----------------+
| Some date | 41526|23.32 |
| Some date | 41536|43.22 |
| Some date | 41546|54.32 |
|
我从shell脚本测试了命令,它运行得很好。但是,当我从nodejs运行它时,它会给出以下错误:
wget -qO- some.website | awk -F \"</*TD ALIGN=LEFT>|</*TD>|<*/A>\" \'/<TD ALIGN=LEFT>.*[A-Z]/ {print $12}\' | sed -n 1p
请帮忙。
编辑:
/bin/sh: TD: No such file or directory
configs.command有我传递的命令
EDIT2:
var reportTCC = function() {
let child = exec(configs.command, function(error, stdout, stderr) {
if (error !== null) {
log.error('Error executing the command to retrieve Run Info: ' + error);
stdout = "UNKNOWN"
}
let run_type = stdout;
});
};
答案 0 :(得分:1)
由于您的转义字符已传递到ssh
命令,因此您很可能不需要转义awk
个参数。基于您的ssh使用单引号的事实,例如:
ssh -t user@domain 'command to invoke'
使用双引号将您的参数包装在这些单引号内(因此请使其保持一致,如在您的第一个示例中,您将两者都混合在一起)。另见:How to escape a double quote inside double quotes?
如果您不确定如何调用该命令,请调用set -x
shell命令输出跟踪消息,或运行以下命令:
ssh -t user@domain bash -x -c 'command to invoke'
另一个建议是不要使用awk
和正则表达式来解析HTML,而是使用相关工具,例如:pup
,xpup
或html-xml-utils
。请参阅:About parsing html and extract data using shell。