来自grep输出的Bash脚本案例菜单

时间:2021-04-22 15:40:45

Hello i need to make a simple bash script which makes a simple menu from a grep output. This is the grep part of the script that i have made so far:

您好我需要创建一个简单的bash脚本,它从grep输出中生成一个简单的菜单。这是我到目前为止所做的脚本的grep部分:

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

Sample output:

样本输出:

1 DEVICE ttyUSB0
2 DEVICE ttyUSB1
3 DEVICE ttyUSB2

The user should then be able to choose one of these outputs from for example a case menu and then revoke some code. for example:

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

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

where $line is the ttyUSB device.

其中$ line是ttyUSB设备。

i know how to make a static case menu. I just cant figure out how to make a dynamic one from the grep output.

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

1 个解决方案

#1


1  

Try this:

尝试这个:

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]

You could also use the built-in select command:

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

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

#1


1  

Try this:

尝试这个:

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]

You could also use the built-in select command:

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

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