Linux 如何使用Bash将命令输出列表生成菜单选项列表?
如何使用Bash将命令输出列表生成菜单选项列表 命令:Linux 如何使用Bash将命令输出列表生成菜单选项列表?,linux,bash,shell,Linux,Bash,Shell,如何使用Bash将命令输出列表生成菜单选项列表 命令:mount | grep/media | awk'{print$3}列出我的计算机上所有已装入的USB存储 它可以是空的,也可以是多行 当它为空时,我将回显一条消息 当它是多行时,我想将此输出设置为菜单选项列表,如下所示: AAA BBB CCC 困难在于,输出的行数不是固定的,所以菜单将是不固定的选择 我被卡住了。这里有一些有用的东西: #!/bin/sh output=$(mount|grep /media|awk '{prin
mount | grep/media | awk'{print$3}
列出我的计算机上所有已装入的USB存储
- 它可以是空的,也可以是多行李>
- 当它为空时,我将回显一条消息李>
- 当它是多行时,我想将此输出设置为菜单选项列表,如下所示:
- AAA
- BBB
- CCC
我被卡住了。这里有一些有用的东西:
#!/bin/sh
output=$(mount|grep /media|awk '{print $3}')
if [[ -z $output ]]; then
# output is empty
echo "Empty not found"
else
# output is not empty
echo $output
fi
您能否提供输出的预览,以便我也可以对其进行格式化以下是一些有效的方法:
#!/bin/sh
output=$(mount|grep /media|awk '{print $3}')
if [[ -z $output ]]; then
# output is empty
echo "Empty not found"
else
# output is not empty
echo $output
fi
您能否提供输出的预览,以便我也可以对其进行格式化如果您确实希望列表项以
#)的方式进行编号
可以这样做
#/bin/bash
计数=0
以美元为单位(挂载| grep'/media'| awk'{print$3}');做
计数=$((计数+1))
回显“${count})$每个”
完成
如果[“$count”-等式0];然后
回显“未找到磁盘”
fi
末尾的if语句触发if循环,因为结果为零,因此从不运行 如果您确实希望列表项以
#)
的方式进行编号,您可以这样做
#/bin/bash
计数=0
以美元为单位(挂载| grep'/media'| awk'{print$3}');做
计数=$((计数+1))
回显“${count})$每个”
完成
如果[“$count”-等式0];然后
回显“未找到磁盘”
fi
末尾的if语句触发if循环,因为结果为零,因此从不运行 根据您的描述,我理解您喜欢根据给定的命令输出动态创建菜单或选择列表。一个可能的解决方案可以是
#!/bin/bash
# Gather the USB drives into an array
unset DRIVES
while IFS= read -r LINE; do
DRIVES+=("${LINE}")
done < <(mount -l | grep /dev/sd | awk '{print $3}') # < You may change this for your needs ... since I dont have USB in my VM
# Iterate over an array to create select menu
select USB in "${DRIVES[@]}" "Quit"; do
case ${USB} in
/)
echo "Drive ${USB} selected"
# Further processing
;;
"Quit")
echo "Exit"
break
;;
*)
echo "Not available"
;;
esac
done
#/bin/bash
#将USB驱动器收集到阵列中
取消设置驱动器
而IFS=读取-r行;做
驱动器+=(“${LINE}”)
完成<根据您的描述,我理解您喜欢根据给定的命令输出动态创建菜单或选择列表。一个可能的解决方案可以是
#!/bin/bash
# Gather the USB drives into an array
unset DRIVES
while IFS= read -r LINE; do
DRIVES+=("${LINE}")
done < <(mount -l | grep /dev/sd | awk '{print $3}') # < You may change this for your needs ... since I dont have USB in my VM
# Iterate over an array to create select menu
select USB in "${DRIVES[@]}" "Quit"; do
case ${USB} in
/)
echo "Drive ${USB} selected"
# Further processing
;;
"Quit")
echo "Exit"
break
;;
*)
echo "Not available"
;;
esac
done
#/bin/bash
#将USB驱动器收集到阵列中
取消设置驱动器
而IFS=读取-r行;做
驱动器+=(“${LINE}”)
完成<欢迎使用堆栈溢出。这也是一个面向专业和热情程序员的问答页面。在问题中添加您自己的代码。你至少要展示你自己为解决这个问题所做的研究。你的目标是一个列表还是一个菜单,哪个菜单会有其他用途,并且实际上是可选择的??欢迎来到Stack Overflow。这也是一个面向专业和热情程序员的问答页面。在问题中添加您自己的代码。你至少要展示你自己为解决这个问题所做的研究。你的目标仅仅是一个列表,还是一个菜单,哪个菜单会有其他用途,并且实际上是可选择的??