AWKでは「文字列」と「数値」の区別が曖昧である。

 例えば,変数 a の内容が 123 という数値,変数 b の内容が "456" という文字列であったとしよう。
 x=a+b のような式があると,b456 という数値に変換されてから 123 と足し算される。結果は 579 という数値になって x に格納される。
 y = "Answer =" a という式があると,123 という数値が文字列 "123" に変換されてから "Answer =" という文字列と連結される。結果は "Answer = 123" という文字列になって y に格納される。

 大抵の場合は,思った通りの動作をしてくれるが,場合によっては動作がおかしいときがある。そのような場合には,数値として扱って欲しいときには「変数+0」としたり,文字列として扱って欲しいときには「変数 ""」としたりということが必要になる。馴れないうちはどつぼに入り込んでしまうことがある。

 なお,変数の初期値は空文字列であり,空文字列が表す数値は 0 として扱われることになっている。  この辺が理解できると,

	two=2
	three=3
	print (two three)+4
の表示が 27 になる理由も分かるだろう。
前のページへ戻る
Last modified: May 15, 2002

E-mail to Shigenobu AOKI