我需要以下幫助,她會撰寫腳本
假設我們有 2 個變數,它們將以大小為單位動態獲取值 byes kb me gb
Var1 = 25 mb 它可以是任何大小,以位元組或 kb 或 mb 或 gb 為單位
Var2 = 1 gb 它可以是任何大小,以位元組或 kb 或 mb 或 gb 為單位
現在我需要比較這些值,如果 var1 的大小小于 var2 的大小,則繼續進行,否則出來。
請幫助我對 bash 腳本非常陌生
我是 shell 新手,不知道怎么寫
uj5u.com熱心網友回復:
匹配前綴,適當相乘。在https://ideone.com/W1vXOk看到這個運行
#!/usr/bin/env bash
size_re='^[[:space:]]*([[:digit:]] )[[:space:]]*([kmg]b)[[:space:]]*$'
declare -A multipliers=(
[kb]=$(( 1024 ))
[mb]=$(( 1024 * 1024 ))
[gb]=$(( 1024 * 1024 * 1024 ))
)
to_bytes() {
result=$1
if [[ $1 =~ $size_re ]] && { units=${BASH_REMATCH[2]}; [[ $units && ${multipliers[$units]} ]]; }; then
result=$(( ${BASH_REMATCH[1]} * ${multipliers[${BASH_REMATCH[2]}]} ))
elif (( $1 )); then
result=$(( $1 ))
else
echo "ERROR: $1 could not be parsed as a number" >&2
return 1
fi
echo "$result"
}
Var1='25 mb'
Var2='1 gb'
Var1_bytes=$(to_bytes "$Var1") || exit
Var2_bytes=$(to_bytes "$Var2") || exit
if (( Var1_bytes > Var2_bytes )); then
echo "Var1 is larger than Var2"
else
echo "Var1 is not larger than Var2"
fi
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/531346.html
標籤:重击壳
