系统命令bash

系统命令bash,bash,awk,grep,system,Bash,Awk,Grep,System,我想在bashshell脚本中使用system命令。具体来说,, 如果满足awk中的某些条件(工作节点数为17),我希望 为了给我发送电子邮件,我编写了以下代码: showq | grep nodes | awk '{if ($3 == 17) system("mailx -s 'Everything is Ok' armando@nodes.com <<EOF Tranquiquis EOF") ; else print "some nodes are not working"

我想在bashshell脚本中使用system命令。具体来说,, 如果满足awk中的某些条件(工作节点数为17),我希望 为了给我发送电子邮件,我编写了以下代码:

showq | grep nodes | awk '{if ($3 == 17) system("mailx -s 'Everything is Ok' armando@nodes.com <<EOF Tranquiquis EOF")  ; else  print "some nodes are not working"; fi }'

showq | grep节点| awk'{if($3==17)系统(“mailx-s‘一切正常’armando@nodes.com您正在对awk命令使用单引号,在它们内部,文本的单引号应该用反斜杠转义。

正如其他两个答案所述,问题是您使用单引号。不幸的是,他们给出的建议解决方案(反斜杠转义单引号)不起作用。您无法通过在单引号字符串中转义单引号来获取单引号。最简单的解决方案是编写:

system("mailx -s \"Everything is Ok\" ... 系统(“mailx-s\“一切正常”。。。
我发现了这个问题,它与单引号无关。事实上,我使用的是'showq'之类的命令,但必须使用整个引号 命令的路径:crontab中的“/opt/moab/bin/showq”

谢谢。

showq | grep nodes | awk'
showq | grep nodes | awk '
{
  if ($3 == 17)
    system("mailx -s \47Everything is Ok\47 armando@nodes.com <<eof" RS \
    "Tranquiquis" RS "eof")
  else print "some nodes are not working"
}
'
{ 如果($3==17)
系统(“mailx-s\47一切正常\47armando@nodes.com我按照您的建议键入:系统(“mailx-s\”一切正常“armando@nodes.com试着找一份工作比值得的麻烦多(