如何解决AWK命令意外的换行符或字符串结尾
我试图在此脚本中使用$ {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
中调用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
}
}'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。