You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash如何创建磁盘分区选择菜单?数组取值异常怎么修复?

问题解决方法

核心错误原因

Bash 中获取数组指定下标元素的正确语法为 ${数组名[下标]},你使用的$dev[$selected_number]写法会被 Shell 解析为:取未定义的变量dev的空值,拼接字符串[、输入的编号值、],因此最终输出为[5]而非预期的设备路径。

修复步骤

  • 将错误的赋值行selected_device=$dev[$selected_number]替换为以下正确写法即可解决核心问题:
selected_device=${dev[$selected_number]}

优化后的完整脚本

你可以参考以下加入了输入校验、代码简化逻辑的版本:

#!/bin/bash
count=0
# 简化设备列表获取逻辑,无需额外调用sed
for device in $(fdisk -l | awk '/^\//{print $1}')
do
  count=$((count+1))
  dev[$count]=$device
  echo "$count: $device"
done

# 无可用设备时直接退出
if [ $count -eq 0 ]; then
  echo "未检测到可用块设备"
  exit 1
fi

# 输入合法性校验
while :
do
  echo "请选择卷(输入数字 1-$count):"
  read -r selected_number
  # 判断是否为合法数字且在可选范围内
  if [[ $selected_number =~ ^[0-9]+$ && $selected_number -ge 1 && $selected_number -le $count ]]; then
    break
  fi
  echo "输入不合法,请重新输入"
done

selected_device=${dev[$selected_number]} 
echo "你选择的设备是: $selected_device"

内容的提问来源于stack exchange,提问作者Davide Pacchiarotti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:36:01