Као и већина програмских језика, басх скрипте понекад морају да раде са листом повезаних вредности. Најједноставнији облик је стандардни низ.
У басх-у, програмирање низова је сасвим другачије, посебно када је у питању синтакса. Басх низови су такође стриктно једнодимензионални, али и даље имају доста употреба.
Основна синтакса Басх низова
Креирање низа у басх-у је једноставно. Можете иницијализовати цео низ помоћу заграда, на пример:
цити=(Лондон Париз Милан "Њујорк")
(Сав код из овог примера града можете пронаћи у овај ГитХуб Гист.)
Ово ствара низ који садржи четири елемента, индексирана од 0 до 3. Имајте на уму да је четврта вредност низ наводника који се састоји од две речи. Мораћете да цитирате вредности које садрже размаке да бисте разјаснили да то нису засебне вредности.
Можете приступити једном елементу користећи синтаксу заграде која је уобичајена у програмским језицима:
град[2]
Пошто је ово басх, требаће вам неколико побољшања да бисте заиста користили вредност у изразу:
- Мораћете да додате знак долара ($) на име променљиве.
- Такође ћете морати да користите протезе ({}) да име променљиве буде недвосмислено. Подразумевано, басх ће третирати $цити[2] као променљива именована град. Додајте заграде да кажете басх-у да процени и заграде и број индекса.
Стандардна синтакса приступа басх низу је тада:
${вариабле_наме[индек]}
Ево комплетног примера:
#!/бин/басх
цити=(Лондон Париз Милан "Њујорк")
ехо ${цити[3]}
# Њу Јорк
Уместо да иницијализујете низ одједном, можете му доделити корак по корак. Ова скрипта је дужи еквивалент претходног примера:
#!/бин/басх
град[0]=Лондон
град[1]=Париз
град[2]=Милано
град[3]="Њујорк"
ехо ${цити[3]}
# Њу Јорк
Имајте на уму да, у оба случаја, морате пазити да не додате размак око знака једнакости. „цити[0] = Лондон“, са размацима око знака једнакости, генерише грешку.
Више употреба за Басх низове
Низови су савршени за складиштење повезаних података. Ево (веома ограничене) схелл скрипте за добијање квадратног корена броја:
#!/бин/басх
скрт[1]=1
скрт[4]=2
скрт[9]=3
скрт[16]=4
скрт[25]=5
ехо ${скрт[$1]}
Имајте на уму да скрипта користи вредност $1 као индекс низа. $1 представља први аргумент командне линије који скрипта прима, тако да можете покренути ову скрипту на следећи начин:
$ ./скрт.сх 9
3
Можда сте свесни $(цмд) синтаксу да изврши наредбу и сачува њен излаз у променљивој. Ово можете комбиновати са синтаксом иницијализације низа да бисте добили низ датотека за рад:
арр=( $(лс) )
Низ је често савршена структура података за понављање и Баш није изузетак. Можете проћи кроз низ да бисте одштампали сваки елемент или извршили операцију на сваком члану.
Можете адресирати низ у а за.. ин петља, за понављање његовог садржаја. На пример, ево једноставне петље која штампа број линија у свакој датотеци у низу арр:
за датотеку у "${арр[@]}"; урадите
вц -л "$ фајл"
Готово
# 3 енвварс
# 547 хттпд.цонф
# ...
Имајте на уму да овај образац користи @ симбол за преузимање свих елемената из низа.
Више синтаксе Басх низа
Можете добити број ставки у низу користећи следеће:
ехо ${#цити[@]}
# 4
Можете додати нови елемент на крај стандардног низа на следећи начин:
арр+=(4)
Дакле, да додате пети град на листу:
град+=(Рим)
ехо ${цити[@]}
# Лондон Париз Милано Њујорк Рим
Да бисте издвојили део низа, можете користити синтаксу која апроксимира операцију пресека многих других језика:
${арр[@]:с: н}
Ова синтакса ће вратити део низа који почиње на позицији с и који садржи н ставке. Можете изоставити :н део за издвајање свих ставки из с до краја листе.
ехо ${цити[@]:2:2}
# Милан Њујорк
ехо ${цити[@]:3}
# Њујорк Рим
Басх има много функција, само им је потребно мало учења
Низови у басх-у могу имати ограничења, али нуде исту основну функционалност као и већина програмских језика. Иако је басх историјски подржавао само једноставне једнодимензионалне низове, времена се мењају. Најновија верзија басх-а, 4, подржава асоцијативне низове и негативно индексирање низова.
Коју год верзију басх-а да користите, важно је разумети њене нијансе. Чак и нормална синтакса променљивих има доста идиосинкразија.
Објашњење Басх променљивих: Једноставан водич са примерима
Реад Нект
Повезане теме
- Програмирање
- Линук
- Програмирање
- Линук Басх Схелл
- Скриптирање
О аутору
Боби је технолошки ентузијаста који је већину две деценије радио као програмер софтвера. У МУО, он је млађи уредник одељења за програмирање. Он је страствен за игре, ради као главни уредник у Свитцх Плаиер Магазину и уроњен је у све аспекте онлајн издаваштва и веб развоја.
Претплатите се на наш билтен
Придружите се нашем билтену за техничке савете, рецензије, бесплатне е-књиге и ексклузивне понуде!
Кликните овде да бисте се претплатили