エラーチェックのためにファイルの最後を確認しようとしています。私はawkで動作させようとしていますが、awkで計算された値は私のbashに戻すことはできません。Bash:ファイル内の値を確認してください
s=0
f=0
for ((i=0;i<num_inf;i++)) do
ii=${inf[$i]}
for ((j=0;j<num_gro;j++)) do
jj=${gro[$j]}
for ((k=0;k<num_tri;k++)) do
kk=${tri[$k]}
awk 'END{x=($2+$8);if($x<10) ((f++)) ;else ((s++))}' $ii/$jj/$kk/out.dat
done
printf '%2s' "$s"
printf '%2s' "$f"
s=0
f=0
done
done
返さsおよびFここでのif-elseテストがあるので、常に0です、私はSの少なくとも一つを期待して、fはゼロ以外の値を返します。
誰でもawkの使用経験がありますか?私はbashとawkの初心者です。または、誰かがawkをバイパスするための提案を持っている/より簡単なソリューションがありますか?
ありがとうございます。ここ
AWKプロセスは、単独で実行されます。 's'と' t'の値をファイルの最後に当てて出力し、bashで '$(' ... ')'を使ってこの結果を取得します。 – Jasen
awkから数値を出力する場合、その数値をシェルスクリプトが読み込みコマンドにパイプすることで読み取ることができます。 – blackpen
これは保護された環境なので、次のように 'eval'を使うことができると思います: ' eval "$(awk 'END {x =($ 2 + $ 8); if($ x <10)echo" ");" else "echo"((s ++)) "}" "$ ii/$ jk/$ kk/out.dat") "' – anishsane