【发布时间】:2023-03-18 15:50:02
【问题描述】:
我尝试了unix.com 的一些代码,将其修改为设备选择器。
#!/bin/bash
count=0
for device in `fdisk -l | sed -n '/^[/]/p' | awk '{print $1}'`
do
count=$((count+1))
dev[$count]=$device
echo "$count: $device"
done
echo "Select volume (numbers 1-$count):"
read selected_number
selected_device=$dev[$selected_number]
echo "The device you selected is: $selected_device"
由于某种原因,selected_device=$dev[$selected_number] 行没有按预期工作。
我想我犯了一些初学者的语法错误。
它给出的输出是
1: /dev/nvme0n1p1
2: /dev/nvme0n1p2
3: /dev/nvme0n1p3
4: /dev/nvme0n1p4
5: /dev/nvme0n1p5
6: /dev/nvme0n1p6
7: /dev/nvme0n1p7
8: /dev/mmcblk0p1
Select volume (numbers 1-8):
5
The device you selected is: [5]
虽然我希望像The device you selected is: /dev/nvme0n1p5
(我以 sudo 运行脚本,顺便说一句)
提前感谢您的帮助。
【问题讨论】:
-
试用:
selected_device=${dev[$selected_number]} -
不要自己实现
select逻辑,而是使用bash的select:help select