2017-04-13 27 views
0

awkコード内でmystatusシェル変数を新しい値に更新したいとします。 けど。このAWK条件ブロック内のシェルスクリプト変数の値を変更する

私のコードで私を助けてください、私は も、私は宣言や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. 
+0

このようにシェル変数を変更することはできません。それをawkのファイルに書き出し、それをシェルの変数に読み込みます。 –

答えて

0

は何か:

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. 

ファイルから変数を読み取る方法があれば、bash純粋な人がコメントできますか?

+0

james:上記のコードでエラーが発生しました ' END {print" "} awk:cmd。行:8:^構文エラー awk:cmd。行:9:END {print ""} awk:cmd。行:9:^予期しない改行または文字列の終わり ' – aejaz

+0

'} 'が1つ欠けていました。 –

+0

バディなし!コードは正常に実行されましたが、mystatus.txtは作成されませんでした。 – aejaz

関連する問題