Bash - переменные регистрационные параметры, основанные на проанализированном CSV? - PullRequest
0 голосов
/ 07 февраля 2019

Хорошо, я в тупике, но, конечно, это возможно ..

Скажем, у вас есть файл options.csv, который выглядит как

ID, option
1, something
2, something else
3, you get the point
4, fin

И я хочу разобрать эти элементы для использования в качествевыбираемые пользователем элементы в операторе case, что делает оператор по существу переменным в случае изменения CSVЯ полагаю, что могу проанализировать файл с помощью read и IFS =, но я заблудился относительно того, как взять то, что будет проанализировано в выбираемое пользователем меню.

Возможно ли такое в bash?Конечно, я думаю, что это так, но я не знаю, как реализовать.Бонус, если ID столбца CSV совпадает с входным значением выбора из оператора 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

1 Ответ

0 голосов
/ 07 февраля 2019

С 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 и сортируются в порядке возрастания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...