nonvioce 4 месяцев назад
Родитель
Сommit
7286479827
1 измененных файлов с 11 добавлено и 11 удалено
  1. 11 11
      copyFast.sh

+ 11 - 11
copyFast.sh

@@ -110,17 +110,17 @@ list_usb_disks() {
             part_label=$(lsblk -o LABEL -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
                 best_size_bytes=$part_size_bytes