2017-04-07 162 views
1

我在這個路徑中的/var/tmp/test/dsk/file.1中有一個4GB的文件。這 我們可以通過Solaris Linux命令看到如下:如何將字符串轉換爲shell腳本中的整數?

-bash-4.4# du -h /var/tmp/test/dsk/file.1 4.0G /var/tmp/test/dsk/file.1 

我只想磁盤大小,所以我做了以下。

disk=`du -h /var/tmp/test/dsk/file.1| awk '{print $1}'|tr -d '.G'` 

這使我的輸出如下:

-bash-4.4# echo $disk 4.0 

,但我想這個磁盤大小與值50進行比較,這個首先我需要上面的輸出轉換爲整型,但我米未能做 ,誰可以幫助在這個,我已經搜索了這個,但不是 得到確切的解決方案。

回答

0

對不起,但我不認爲這可能是這裏的probem :) 像BC一個工具,它接受任何格式,你可以給出:

[ $(bc <<< "$disk>=50") -eq 1 ] 

順便說一句,你可能要轉換您的人類可讀的大小輸出爲簡單的數字字節大小,其功能如下:

# Converts human readable sizes into integer kilobyte sizes 
# Usage numericSize="$(HumanToNumeric $humanSize)" 
function HumanToNumeric { 
    local value="${1}" 

    local notation 
    local suffix 
    local suffixPresent 
    local multiplier 

    notation=(K M G T P E) 
    for suffix in "${notation[@]}"; do 
     multiplier=$((multiplier+1)) 
     if [[ "$value" == *"$suffix"* ]]; then 
      suffixPresent=$suffix 
      break; 
     fi 
    done 

    if [ "$suffixPresent" != "" ]; then 
     value=${value%$suffix*} 
     value=${value%.*} 
     # /1024 since we convert to kilobytes instead of bytes 
     value=$((value*(1024**multiplier/1024))) 
    else 
     value=${value%.*} 
    fi 

    echo $value 
}