好吧,我很困惑,但是肯定可以。.
假设您有如下所示的options.csv
ID, option
1, something
2, something else
3, you get the point
4, fin
我想将这些项目解析为case语句中的用户可选项目,从而使该语句在CSV发生更改时实质上是可变的。我想我可以使用read和IFS =来解析文件,但是我不知道如何将解析后的内容转换为用户可选菜单。
用bash这样的事情有可能吗?我当然认为是这样,但是我对如何实现一无所知。如果CSV的ID列与case语句的选择输入相匹配,则将获得奖励。
@Cyrus使我步入正轨。
像这样?虽然我知道语法已关闭:
#read csv file to an array and ignore header
mapfile -t array < <(awk -F ', ' 'NR>1{print $2}' $file)
#Use array to map values to selection menu
select name in "${array[@]}";do echo "$name" >> item.list; done
cat $sysBanner > itemMenu && cat item.list >> itemMenu && echo -e "\n\n" >> itemMenu
cat itemMenu
read -p "Item to select: "
case $itemSelected in
@) echo -e "\nOK, $name selected.\n"
sleep 1 && clear
componentName=$name
;;
* ) echo "invalid selection. Please try again."
;;
esac
答案 0 :(得分:1)
使用bash和awk:
# Read data to an array and ignore header
mapfile -t array < <(awk -F ', ' 'NR>1{print $2}' file.csv)
# Use array with select command
select name in "${array[@]}"; do echo "$name"; done
输出:
1) something 2) something else 3) you get the point 4) fin #?
我假设文件中的数字始终以1开头,并以升序排序。