Имея Баш, создал простые сценарии для доступа к элементу массива по его index.It следующегоперечисления кажется, не доступен в Баше
#! /bin/bash
OK_INDEX=0
CANCEL_INDEX=1
ERROR_INDEX=2
CONFIRM_INDEX=3
SAVE_INDEX=4
EXIT_INDEX=5
declare -a messageList=("ok"
"cancel"
"error"
"confirm"
"save"
"exit")
printf "%s \n" ${messageList[$CANCEL_INDEX]}
из выше сценариев, мне нужно, чтобы объявить правильные индексные переменный, чтобы получить правильное сообщение от список массив, но это, вероятно, не удобно для меня, чтобы объявить каждую переменную и дать индекс them.It хорошо, если переменная autometically получает значение, как, как в C для типа
ENUM
данных в C это возможно благодаря как
enum index { OK_INDEX, CANCEL_INDEX, ERROR_INDEX,CONFIRM_INDEX,SAVE_INDEX,EXIT_INDEX};
есть альтернативные варианты для ENUM
в bash?
я нашел много, но не преуспели, то есть попробовать трюк, чтобы достичь этого заключается в следующем
ENUM=(OK_INDEX CANCEL_INDEX ERROR_INDEX CONFIRM_INDEX SAVE_INDEX EXIT_INDEX)
maxArg=${#ENUM[@]}
for ((i=0; i < $maxArg; i++)); do
name=${ENUM[i]}
declare -r ${name}=$i
done
Так образуют выше фрагмент кода я успешно создан постоянный, но это, кажется, длинные средства просто Объявляем переменную мне нужно написать Код 5-10 строк, который не справедлив.
У кого-нибудь есть другое решение?
действительно ценю, что вы помогаете, но это также один трюк для объявленной переменной, напишите некоторый код. В вашем скрипте вы реализуете функциональность «enum», которая дает индекс каждому элементу. В любом случае появилась новая идея. –