linux - grep 输出的 Bash 脚本案例菜单

标签 linux bash shell grep case

你好,我需要制作一个简单的 bash 脚本,它可以从 grep 输出中制作一个简单的菜单。 这是我到目前为止制作的脚本的 grep 部分:

x=1
ls /dev/ | grep USB | while read -r line ; do
    echo "$x DEVICE $line"
    x=$(( $x + 1 ))
done

示例输出:

1 DEVICE ttyUSB0
2 DEVICE ttyUSB1
3 DEVICE ttyUSB2

然后用户应该能够从例如案例菜单中选择这些输出之一,然后撤销一些代码。例如:

sudo kermit -C "set line /dev/$line",set carrier-watch off","connect"

其中 $line 是 ttyUSB 设备。

我知道如何制作静态案例菜单。我只是想不出如何从 grep 输出中创建一个动态的。

最佳答案

试试这个:

x=1
for line in /dev/*USB*; do
    dev=$(basename "$line")
    devices[$x]=$dev
    echo "$x DEVICE $dev"
    x=$((x+1))
done
read -p "Which device? " devnum
line=$devices[$devnum]

您还可以使用内置的 select 命令:

lines=( $(ls /dev/ | grep USB) )
PS3="Pick a device:"
select devnum in $lines; do
    line=$REPLY
    break
done

关于linux - grep 输出的 Bash 脚本案例菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21953978/

相关文章:

c - 使用时间函数时出现段错误(核心转储)错误

linux - Bash 非阻塞源(背景???)

c++ - 如何从可执行文件中打开 bash?

linux - 从输入(sshpass?)在多个本地服务器上执行 SSH remote cmd exec

Linux Shell 脚本 : How to compare a specific field in a text document with specific text in an if statement

linux - 如何在csv中将列的所有数据放在一行中

使用 libnl 更改网桥标志

python - 删除重复项但保留序列的第一个和最后一个记录

C:For循环变量作为它自己的停止条件?

linux - 根据名称的部分将成千上万个文件放在单独的文件夹中