【问题标题】:Awk command unexpected newline or end of string [duplicate]awk命令意外换行符或字符串结尾[重复]
【发布时间】:2021-01-30 08:52:22
【问题描述】:

我正在尝试查找此脚本中使用的 ${RESULT} 中的哪种值;

#!/bin/ksh
...
echo ${RESULT}|awk '{if ($0 ~ /RUNNING mode/) {print "STATUS=0"; print "PID="'${PID}'; print "INFO="$0; print '$PID' > "'${INSTALLDIR}/domain'/sample_pid.txt"} else {print "STATUS=1"; print "PID=-1"; print "INFO="$0} }'

可能导致此输出:

awk: cmd. line:1: {if ($0 ~ /RUNNING mode/) {print "STATUS=0"; print "PID="27708
awk: cmd. line:1:                                                              ^ unexpected newline or end of string

我尝试将许多特殊字符组合放入 ${RESULT} 中,但从来没有问题。无论如何我可能会重写命令,但我很好奇 ${RESULT} 既可以作为教育点,也可以帮助我重现从测试系统报告给我的错误,否则我没有能够繁殖。

谢谢!

【问题讨论】:

标签: awk newline ksh


【解决方案1】:

您的代码在如何调用 awk 中的 shell 变量 + 函数的冗余使用方面存在问题(例如 print)。建议保留 awk 之类的 awk '.........' Input_file 代码。你可以从以下开始,但由于没有给出样品,我根本没有测试过;它完全基于OP的尝试。

此外,每当您将输出写入输出文件时,最好将输出文件名放在(output file name)

echo "$RESULT" | 
awk -v installdir="${INSTALLDIR}/domain" -v pid="$PID" -v outfile="sample_pid.txt" '
{
  if ($0 ~ /RUNNING mode/){
     print "STATUS=0\nPID=" pid "\nINFO="$0 >  (installdir"/"pid"/"outfile)
  }
  else{
     print "STATUS=1\nPID=-1\nINFO="$0
  }
}'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 2018-03-28
    相关资源
    最近更新 更多