|
@@ -110,17 +110,17 @@ list_usb_disks() {
|
|
|
part_label=$(lsblk -o LABEL -n "$dev" | tr -d '[:space:]')
|
|
part_label=$(lsblk -o LABEL -n "$dev" | tr -d '[:space:]')
|
|
|
part_mp=$(lsblk -o MOUNTPOINT -n "$dev" | tr -d '[:space:]')
|
|
part_mp=$(lsblk -o MOUNTPOINT -n "$dev" | tr -d '[:space:]')
|
|
|
|
|
|
|
|
- # 解析 SIZE
|
|
|
|
|
- local unit val
|
|
|
|
|
- unit="${part_size_str: -1}"
|
|
|
|
|
- val="${part_size_str%?}"
|
|
|
|
|
- case "$unit" in
|
|
|
|
|
- T) part_size_bytes=$((val * 1099511627776)) ;;
|
|
|
|
|
- G) part_size_bytes=$((val * 1073741824)) ;;
|
|
|
|
|
- M) part_size_bytes=$((val * 1048576)) ;;
|
|
|
|
|
- K) part_size_bytes=$((val * 1024)) ;;
|
|
|
|
|
- *) part_size_bytes=$val ;;
|
|
|
|
|
- esac
|
|
|
|
|
|
|
+ # 解析 SIZE (用 awk 处理浮点数, 如 "57.3G")
|
|
|
|
|
+ part_size_bytes=$(awk -v s="$part_size_str" '
|
|
|
|
|
+ BEGIN {
|
|
|
|
|
+ u = substr(s, length(s))
|
|
|
|
|
+ v = substr(s, 1, length(s)-1) + 0
|
|
|
|
|
+ if (u == "T") printf "%d", v * 1099511627776
|
|
|
|
|
+ else if (u == "G") printf "%d", v * 1073741824
|
|
|
|
|
+ else if (u == "M") printf "%d", v * 1048576
|
|
|
|
|
+ else if (u == "K") printf "%d", v * 1024
|
|
|
|
|
+ else printf "%d", v
|
|
|
|
|
+ }')
|
|
|
|
|
|
|
|
if [[ "$part_size_bytes" -gt "$best_size_bytes" ]]; then
|
|
if [[ "$part_size_bytes" -gt "$best_size_bytes" ]]; then
|
|
|
best_size_bytes=$part_size_bytes
|
|
best_size_bytes=$part_size_bytes
|