$ 1の値が0(数値0)の場合、awkが異なる動作をするのはなぜですか?

$ 1の値が0(数値0)の場合、awkが異なる動作をするのはなぜですか?

awkが受信したとき「0」入力として場合によっては異なる動作をします。コードは以下のように表示されます。

var=$1
echo ""; echo -n 'o/p of $1=$1 ==>'; echo $var | awk '$1=$1'
echo "";echo -n 'o/p of {$1=$1;print} ==>';echo $var | awk '{$1=$1;print}'
echo "";echo -n 'o/p of $1==$1 ==>';echo $var | awk '$1==$1'
echo "";echo -n 'o/p of {$1==$1;print} ==>';echo $var | awk '{$1==$1;print}'

に出力「0」(数字0):

[root@host ~]# sh /tmp/te.sh 0

o/p of $1=$1 ==>
o/p of {$1=$1;print} ==>0

o/p of $1==$1 ==>0

o/p of {$1==$1;print} ==>0
[root@GORJALA ~]#

に出力「1」(最初):

[root@host ~]# sh /tmp/te.sh 1

o/p of $1=$1 ==>1

o/p of {$1=$1;print} ==>1

o/p of $1==$1 ==>1

o/p of {$1==$1;print} ==>1
[root@host ~]#

var=0; echo $var | awk '$1=$1'とを使用すると、なぜ違いが発生するのですかvar=1; echo $var | awk '$1=$1'?を除くすべての数字が正常に機能します0

バージョン:

  • GNUバッシュ、バージョン4.2.46
  • GNU Awk 4.0.2
  • coreutils-8.22-24.el7.x86_64

ベストアンサー1

~からGNU Awkユーザーガイド:

割り当ては式なので、割り当てられる値と同じ値を持ちます。したがって、「z = 1」は値が1の式です。

だから

  • echo 0 | awk '$1=$1'このモードは0(FALSE)と評価されます。

  • echo 1 | awk '$1=$1'printこのモードは1(TRUE)と評価され、基本操作を実行します。

おすすめ記事