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" }

}'  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM