Шта су индексни низови
Индексирани низови су колекција елемената у басх-у којима се може приступити помоћу индекса или кључа. Ови низови се могу користити за складиштење и преузимање података одређеним редоследом, што олакшава управљање великим количинама података. Синтакса за декларисање индексираног низа у басх-у је следећа:
< име_низа > = ( елемент1 елемент2 елемент3 ... )Овде је име_низа име низа, а елемент1, елемент2, елемент3 и тако даље су вредности које се чувају у низу. Вредности су раздвојене размаком и имајте на уму да такође можете користити команду децларе за креирање низа.
Како користити индексиране низове у Басху
Да бисте креирали низ индекса у басх-у, једноставно морате да декларишете променљиву и доделите јој вредности затворене у заградама и раздвојене размацима. Ево неколико примера који показују како се користе индексирани низови у басх-у:
Промена редоследа листе у Басху
Ако имате листу ставки у одређеном редоследу и желите да их промените на другачији начин. Можете да користите низ индекса да бисте креирали нову наруџбу за ставке, на следећи начин:
#!/бин/басх
ставке = ( 'манго' 'ананас' 'јагода' 'трешња' 'Грожђе' )
ред = ( 4 2 0 3 1 )
за и ин ' ${ордер[@]} '
урадите
одјек ${итемс[$и]}
Готово
У овом примеру креирамо низ под називом ставке са пет елемената. Такође креирамо низ индекса који се зове налог, који специфицира нови ред за ставке. Затим пролазимо кроз низ редоследа и користимо сваку вредност као индекс да бисмо преузели одговарајућу ставку из низа ставки и одштампали је.
Филтрирање листе у Басху
Ако имате листу ставки и желите да филтрирате одређене ставке на основу услова. Можете да користите низ индекса да бисте пратили индексе ставки које испуњавају услов, на следећи начин:
#!/бин/басх
ставке = ( 'манго' 'ананас' 'јагода' 'трешња' 'Грожђе' )
индекси = ( )
за и ин ' ${!итемс[@]} '
урадите
ако [ [ ${итемс[$и]} == * 'р' * ] ]
онда
индекси+= ( $и )
бити
Готово
за и ин ' ${индицес[@]} '
урадите
одјек ${итемс[$и]}
Готово
У овом примеру креирамо низ под називом ставке са пет елемената. Такође креирамо празан низ индекса који се зове индекси. Затим прелазимо кроз низ ставки и проверавамо да ли свака ставка садржи слово „р“. Ако јесте, додајемо његов индекс у низ индекса. Коначно, пролазимо кроз низ индекса и користимо сваку вредност као индекс да бисмо преузели одговарајућу ставку из низа ставки и одштампали је.
Бројање појављивања у Басх-у
Ако имате листу ставки и желите да избројите број појављивања сваке ставке, можете користити низ индекса да бисте пратили бројање и ево примера за демонстрацију:
#!/бин/басхставке = ( 'манго' 'ананас' 'јагода' 'трешња' 'Грожђе' )
рачуна = ( )
за и ин ' ${!итемс[@]} '
урадите
ако [ [ ! ' ${цоунтс[@]} ' =~ ' ${итемс[$и]} ' ] ]
онда
броји+= ( ' ${итемс[$и]} 1' )
друго
индекс =$ ( одјек ' ${цоунтс[@]} ' | тр '' '\н' | дршка -н '^ ${итемс[$и]} ' | са )
цоунт =$ ( одјек ' ${цоунтс[$индек-1]} ' | резати -д '' -ф2 )
рачуна [ $индек - 1 ] = ' ${итемс[$и]} $((број+1) )'
бити
Готово
за цоунт ин ' ${цоунтс[@]} '
урадите
одјек $цоунт
Готово
Прво иницијализује низ под називом „итемс“ са листом стрингова. Затим декларише празан низ под називом „цоунтс“. Фор петља је креирана за понављање за сваку ставку у низу „итемс“ и за сваку ставку проверава да ли већ постоји у низу „цоунтс“.
Ако не постоји, додаје ставку и број 1 у низ „цоунтс“. Ако постоји, повећава број те ставке у низу „цоунтс“. Коначно, за штампање сваке ставке и њеног одговарајућег бројања користи се друга фор петља. Излаз овог кода ће одштампати број сваке ставке у низу „итемс“, са дупликатима који се рачунају одвојено.
Ажурирање листе у Басху
Ако имате листу ставки и желите да додате или избришете ставке са ње, можете користити низ индекса за њу и ево примера за демонстрацију:
#!/бин/басхставке = ( 'манго' 'ананас' 'јагода' 'трешња' 'Грожђе' )
# Додавање новог елемента у индексирани низ на индексу 2
ставке [ 6 ] = 'наранџаста'
# Брисање елемента са индексом 2 из индексираног низа
унсет ставке [ 2 ]
# Штампање ажурираног низа
одјек ' ${итемс[@]} '
У скрипти је индексирани низ „итемс“ дефинисан са пет почетних елемената. Да бисте додали нови елемент, вредност се једноставно додељује жељеном индексу помоћу синтаксног низа[индекс]=вредност. У овој скрипти, „наранџаста“ се додаје индексу 6 низа. Да избришемо елемент, користимо наредбу унсет праћену индексом елемента који желимо да уклонимо. У овом случају, елемент са индексом 2 („Јагода“) се брише. Ажурирани низ се затим штампа помоћу синтаксе „${арраи[@]}“, која проширује цео низ.
Закључак
Индексирани низови су згодна структура басх-а која вам омогућава да чувате и манипулишете више вредности користећи једну променљиву. Разумевањем синтаксе и употребе индексираних низова, можете писати ефикасније и делотворније басх скрипте.