awk 数字比较
awk中的变量是数字还是字符串会根据上下文转换,如:
$vi test.sh
#!/bin/bash
aS=$1
bS=$2
awk 'BEGIN {
aA="'$aS'"
bA="'$bS'"
if (aA>bA) { print aA+bA "bigger" }
}'
在命令行输入 test.sh 4 100,会显示:
104 bigger
原因是计算四则运算时,awk将其转换为数字,但比较时转换为字符串比较了
解决方法:
1、变量需要转换为数字使用时,手动加0:
#!/bin/bash
aS=$1
bS=$2
awk 'BEGIN {
aA="'$aS'"+0
bA="'$bS'"+0
if (aA>bA) { print aA+bA "bigger" }
}'
2、直接比较改为变量相减后的结果与0比较:
#!/bin/bash
aS=$1
bS=$2
awk 'BEGIN {
aA="'$aS'"
bA="'$bS'"
if (aA-bA>0) { print aA+bA "bigger" }
}'