Linux 更改AWK条件块内的Shell脚本变量值

Linux 更改AWK条件块内的Shell脚本变量值,linux,bash,shell,unix,awk,Linux,Bash,Shell,Unix,Awk,我想将mystatus shell变量更新为awk代码中的新值。 但我猜语法不对, 我也尝试过declare或eval,但没有任何效果 嗨,请帮我做这个 我的代码: mystatus="resolved" -- shell variable awk 'BEGIN { print "<table>" } -- awk code to write in new file { print "<tr><td>" $1 "</td>&

我想将mystatus shell变量更新为awk代码中的新值。 但我猜语法不对, 我也尝试过declare或eval,但没有任何效果 嗨,请帮我做这个

我的代码:

   mystatus="resolved" -- shell variable
   awk 'BEGIN { print "<table>" } -- awk code to write in new file
   {
   print "<tr><td>" $1 "</td><td>" $2 "</td><tr>" 
   if ($1=="stopped") mystatus="problem" -- change shell variable value
   }
   END   { print "</table>" }' filestats.txt > email.html
   echo $mystatus -- variabe value not getting changed.
mystatus=“已解决”--shell变量
awk'BEGIN{print”“}--要在新文件中写入的awk代码
{
打印“$1”“$2”
如果($1==“stopped”)mystatus=“problem”--更改shell变量值
}
结束{print”“}filestats.txt>email.html
echo$mystatus--变量值未更改。
类似的内容(未经测试):

mystatus=“已解决”#shell变量
awk'
开始{print”“}#awk代码以写入新文件
{
打印“$1”“$2”
如果($1==“停止”){
mystatus=“mystatus.txt”
打印“问题”>mystatus#改为写入文件
关闭(mystatus)
}#我失踪了我失踪了我失踪了我失踪了我失踪了我失踪了
}
结束{print”“}filestats.txt>email.html
读取mystatus

一些bash纯粹主义者可能会评论这是否是从文件读取变量的任何方式?

您不能以这种方式更改shell变量。将其写入awk中的文件,并将其读取到shell中的变量。james:getting错误,上面的代码`END{print”“}awk:cmd。第8行:^语法错误awk:cmd。行:9:END{print”“}awk:cmd。行:9:^缺少意外换行符或字符串“One
}
的结尾。没有好友!代码执行得很好,但是没有创建mystatus.txt!好的,这很好:
awk'BEGIN{mystatus=“mystatus.txt”;print“problem”>mystatus;close(mystatus)}
,所以我假设您的代码从未到达程序的该部分。谢谢james,它工作了,非常抱歉之前的评论!我是个新手
mystatus="resolved"                         # shell variable
awk '
BEGIN { print "<table>" }                   # awk code to write in new file
{
    print "<tr><td>" $1 "</td><td>" $2 "</td><tr>" 
    if ($1=="stopped") {
        mystatus="mystatus.txt"
        print "problem" > mystatus          # write to a file instead
        close(mystatus)
    } # I WAS MISSING I WAS MISSING I WAS MISSING I WAS MISSING I WAS MISSING 
}
END   { print "</table>" }' filestats.txt > email.html
read mystatus < mystatus.txt                # read the status from the file
echo $mystatus                              # variabe value not getting changed.