Басх Сцриптинг Туториал за почетнике

Bash Scripting Tutorial



Подразумевани језик команде Линука је Басх скрипта. Морамо свакодневно извршавати многе команде у Линуксу у многе сврхе. Ови свакодневни задаци могу се аутоматизовати коришћењем басх скрипте. Сваки корисник може врло лако и брзо научити овај скриптни језик. Ако сте нови у басх програмирању, онда је овај водич за вас.

Садржај:

  1. Коментари
  2. ецхо Цомманд
  3. Променљиве
  4. Условни исказ
  5. Петље
  6. Функције
  7. Позивање програма у скрипти
  8. Креирање менија
  9. Обрада командне линије
  10. Аритметика
  11. Манипулација низовима
  12. Враћање повратних кодова из скрипте и хватање у другу скрипту
  13. Читање и писање у датотеке
  14. Цеви

Коментари

Додавање коментара помоћу кода је битан део сваког програмског језика. Коментари се не анализирају са скриптом у време извршења. Читалац може правилно разумети сваки код ако је код добро коментарисан. Коментар можете додати на више начина у басх скрипти. У овом делу је приказано како можете додати једноредне и вишередне коментаре у басх скрипту. Направите басх датотеку са следећом скриптом да бисте знали употребу басх коментара. Овде се симбол „#“ користи за додавање коментара у једном реду, а једноструки наводник („) са„: “се користи за додавање коментара у више редова.







басх_цоммент.сх



#!/бин/басх
#Узми број као унос
Избацио 'Унесите број'
читатидо
:'
Проверите да ли је улазни број
мање од 10 или веће од 10 или једнако 10
'

ако [[ $ а -лт 10 ]]
онда
Избацио 'Број је мањи од 10'
елиф [[ $ а -гт 10 ]]
онда
Избацио „Број је већи од 10“
елсе
Избацио 'Број је једнак 10'
бити

Излаз:



Покрените скрипту.





$басхбасх_цоммент.сх

Овде се скрипта изводи три пута са улазном вредношћу 3, 10 и 90. Појавиће се следећи излаз.



Ако желите да сазнате више о басх коментарисању, можете то проверити овај водич .

Иди на врх

ецхо цомманд

Команда `ецхо` се користи у басх за испис излазних података у терминалу. Различите опције се могу користити са наредбом ецхо у басх -у за штампање резултата на различите начине. Направите басх датотеку са следећом скриптом да бисте знали две једноставне употребе команде `ецхо`. Овде ће прва команда `ецхо` одштампати једноставне текстуалне податке са новом линијом, а друга наредба ецхо ће одштампати једноставан текст без новог реда.

ецхо_тест.сх

#!/бин/басх
#Одштампајте први текст
Избацио 'Штампај текст новом линијом'
#Одштампајте други текст
Избацио 'Штампај текст без нове линије'

Излаз:

Покрените скрипту.

$басхецхо_тест.сх

Следећи излаз ће се појавити након извршавања горње команде.

Постоје многе друге употребе команде `ецхо` у басху. У овом водичу можете сазнати више о наредби `ецхо`.

Иди на врх

Променљиве

Декларација променљиве је неопходан део сваког програмског језика. Бас варијабле се могу декларисати на различите начине. Када је вредност додељена променљивој, онда се симбол не користи на почетку променљиве. Симбол „$“ се користи са именом променљиве у време читања вредности променљиве. Променљива се може користити са терминала или се може користити у било ком басх скрипту.

Следеће команде ће декларисати стринг променљиву намед мистр са одређеном вредношћу и следећим исписом вредности променљиве у терминалу.

$мистр='Волим басх програмирање'
$Избацио $ мистр

Излаз:

Направите басх датотеку са следећом скриптом. Овде су декларисане две променљиве. Су $ а и $ б . Ако је улазна вредност која је сачувана у $ а је једнако $ б затим порука, Бројеви су једнаки биће штампано на други начин Бројеви нису једнаки биће штампани.

вар.сх

#!/бин/басх
Избацио 'Унесите број'
читатидо
б=100
ако [[ $ а -ек $ б ]]
онда
Избацио 'Бројеви су једнаки'
елсе
Избацио 'Бројеви нису једнаки'
бити

Излаз:

Покрените скрипту.

$басхвар.сх

Горња команда се извршава два пута са вредностима 56 и 100. Појавиће се следећи излаз.

Ако желите знати више о басх варијаблама, можете провјерити овај водич .

Иди на врх

Условни исказ

Као и други програмски језик, можете користити условни израз у басх -у. ‘ Ако тада још ' и ' случају ’Наводи се углавном користе за имплементацију израза услова у било ком програмском језику. Употреба условне наредбе помоћу 'ако' изјава је приказана у овом одељку овог водича. Направите басх датотеку са следећом скриптом где се користи условни израз. Овде ће се две вредности узети од корисника као унос и сачувати у променљивим, $ код , и $ аге . „Иф“ се користи за проверу вредности $ аге је већи или једнак 18 и вредност $ код је 1100 . Ако су оба услова тачна, порука, Имате право да погледате филм биће штампано на други начин Немате право на гледање филма биће штампани.

цонд.сх

#!/бин/басх

Избацио 'Унесите свој код'
читатикод
Избацио „Унесите своје године“
читатистарост

ако [[ $ аге -дајте 18 && $ код -ек '1100' ]]
онда
Избацио „Имате право да погледате филм“
елсе
Избацио 'Немате право на гледање филма'
бити

Излаз:

Покрените скрипту.

$басхцонд.сх

Следећи излаз ће се појавити након узимања различитих улазних вредности. 1100 је дат као код, а 5 као старост за прво извршавање и ако услов за ове вредности врати вредност фалсе. 1100 је дат као код, а 45 као старост за друго извршавање које враћа вредност за иф услов.

Ако желите да сазнате више о басх условној наредби, можете погледати овај водич.

Иди на врх

Петље

Када неке делове скрипте треба извршити више пута, петља се користи за обављање задатка. Басх подржава три врсте декларације петљи као и други језици. Ово су за, вхиле и до петље. На основу програмских захтева, посебна скрипта се користи у скрипти. Употреба ове три врсте петљи приказана је у овом одељку помоћу једноставних примера.

Коришћење фор петље

Направите басх датотеку са следећом скриптом где ` фор` петља се користи за понављање. `за` лооп се углавном користи за понављање листе података или низа. Овде се користи листа назива радних дана и сваки радни дан се понавља помоћу фор петље. `ако` наредба се користи за штампање одређене поруке на основу назива радног дана.

фор.сх

#Прочитајте назив радног дана у свакој итерацији петље
задануПонедељак уторак среда четвртак петак субота недеља
урадити

#Проверите да ли је назив радног дана понедељак или четвртак
ако [[ $ дан=='Понедељак' || $ дан=='Четвртак' ]]
онда
Избацио 'Састанак је настављен$ дану 9:30 ујутру '

#Проверите да ли је назив радног дана уторак или среда или петак
елиф [[ $ дан=='Уторак' || $ дан=='Среда' || $ дан=='Петак' ]]
онда
Избацио 'Обука на$ дану 11:00 сати '
елсе

#Одштампајте „Одмор“ за друге дане
Избацио '$ данје празник '
бити
Готово

Излаз:

Покрените скрипту.

$басхфор.сх

Следећи излаз ће се појавити након покретања скрипте.

Ако желите знати више о употреби басх фор лооп -а, можете погледати овај водич.

Користећи вхиле петљу

Направите басх датотеку са следећом скриптом где ` док ` петља се користи за понављање. Ова скрипта ће одштампати оне бројеве од 1 до 20 који су парни и дељиви са 5. Овде, $ цоунтер променљива се користи за контролу итерације петље и вредност ове променљиве се повећава за 1 у свакој итерацији. Када `ако` услов ће вратити труе онда ће одштампати вредност $ цоунтер .

#!/бин/басх

#Одштампајте поруку
Избацио 'Одштампајте бројеве који су парни и дељиви са 5'

#Покрените бројач
цоунтер=1

#Поновите петљу све док вредност бројача $ не буде мања или једнака 20
док [ $ цоунтер -тхе двадесет ]
урадити

#Проверите да ли је бројач $ дељив са 2 и 5
ако [[ $ цоунтер%2-ек 0 && $ цоунтер%5-ек 0 ]]
онда
#Одштампај бројач $ без новог реда
Избацио '$ цоунтер'
бити

#Повећај бројач $ за 1
((цоунтер ++))
Готово
Избацио 'Готово'

Излаз:

$басхдок.ш

Постоје само бројеви унутар 1-20 који су парни и дељиви са 5. Следећи излаз ће се појавити након покретања скрипте.

Ако желите знати више о употреби басх ` вхиле` лооп онда можете проверити овај водич .

Користећи петљу до

Направите басх датотеку са следећом скриптом где ` до` петља се користи за понављање. Ова скрипта штампа све непарне бројеве од 0 до 20. $ н променљива се користи у овој скрипти за понављање петље.

до.ш

#!/бин/басх

#Иницијализујте променљиву, н
н=двадесет

#Понављајте петљу све док вредност $ н не буде већа од 0
све док [ $ н -лт 0 ]
урадити

#Проверите да ли је вредност н непарна
ако [[ $ н%2-гт 0 ]]
онда
Избацио $ н
бити

#Повећајте вредност н за 1
((н=$ н-1))
Готово

Излаз:

Покрените скрипту.

$басхдо.ш

Скрипта ће одштампати све парне бројеве од 20 до 1. Следећи излаз ће се појавити након покретања скрипте.

Иди на врх

Функције

Када блок кода треба да се изврши више пута у скрипти, тада се функција користи за обављање задатка. Морате позвати функцију по имену само када се скрипта дефинисана у функцији мора извршити више пута, уместо да додаје исту скрипту више пута. Почетна и завршна прва заграда се користи са именом функције за декларисање функције у басх скрипти. Функција се може позвати само именом функције у басх -у. Басх не подржава аргумент функције као други стандардни програмски језик. Али вредност се може пренети у функцију басх на другачији начин који је приказан у овом одељку. Вредност се може вратити из функције са наредбом ретурн или без употребе наредбе ретурн.

Направите басх датотеку са следећом скриптом да бисте знали како се функције могу декларисати и позвати у басх скрипти. У скрипти су декларисане три функције. Прва функција је декларисана за штампање једноставне поруке, Басх програмирање за почетнике . Друга функција је декларисана да додели вредност низа у променљивој, $ ретурн_стр који ће штампати, Научите басх програмирање са ЛинукХинт -ом након позивања функције. Трећа функција је декларисана да чита вредност аргумента као полупречник круга који ће бити обезбеђен у време позивања функције. Овде, локалним користи се за читање вредности аргумента. Ова функција ће израчунати површину круга на основу вредности радијуса користећи формулу, πр2 и одштампајте израчунату вредност површине.

фунц.сх

#!/бин/басх

#Прогласите једноставну функцију
функцијапринт_мессаге()
{
Избацио „Басх програмирање за почетнике“
}

#Декларишите функцију за враћање вредности низа
функцијарет_стрдата()
{
#Иницијализујте променљиву са стринг вредношћу
ретурн_стр='Научите басх програмирање са ЛинукХинт -ом'
}

#Декларирајте функцију за читање вредности аргумента
функцијаизрачунати_површину()

#Прочитајте прослеђену вредност аргумента
локалним радијус=1 УСД
области= $(Избацио $ радијус*$ радијус*3.14

#Позовите функцију да одштампате једноставну поруку
принт_мессаге

#Позовите функцију која ће доделити вредност низа променљивој
рет_стрдата

#Одштампајте вредност променљиве
Избацио $ ретурн_стр

#Прочитајте вредност радијуса
Избацио 'Унесите вредност радијуса'
читатирад

#Позовите функцију са радијусном вредношћу
израчунати_површину$ рад

Излаз:

Покрените скрипту.

$басхфунц.сх

Следећи излаз ће се појавити након покретања скрипте. Прва два реда штампаће се позивањем функција, принт_мессаге () и рет_стрдата () . Последњи ред ће се одштампати позивањем функције, израчунати_површину () са преузетом вредношћу радијуса улаза.

Ако желите да знате о враћању низа из функције басх, можете ово упутство тхе.

Иди на врх

Позивање програма у скрипти

Можете користити многе врсте команди за позивање других програма у било којој басх скрипти, као што је нпр извор, басх, евал, екец итд. Претпоставимо три басх датотеке, адд.сх , одузети.сх, множи.ш и дељење.ш створена за сабирање, одузимање, множење и дељење. Овде, одузети.ш и подела.ш читати аргументе командне линије. Сценариј све ове четири датотеке дат је у наставку.

адд.сх

#!/бин/басх
до=60
б=40
((резултат=$ а+$ б))
Избацио 'Додатак$ а+$ б=$ резултат'

субрацт.сх

#!/бин/басх
до=1 УСД
б=2 УСД
((резултат=$ а-$ б))
Избацио 'Одузимање$ а-$ б=$ резултат'

умножити.ш

#!/бин/басх
((резултат=1 УСД*2 УСД))
Избацио 'Множење $ 1 и $ 2 је$ резултат'

подели.ш

#!/бин/басх
до=1 УСД
б=2
((резултат=$ а/$ б))
Избацио 'Подела на$ аод стране$ бје$ резултат'

Направите басх датотеку са именом, цаллпро.сх са следећом скриптом за позивање поменутих басх датотека помоћу команди соурце, басх, евал и екец. Морате поставити дозволу за извршење за горе наведене четири датотеке пре него што покренете следећу скрипту. Команда `соурце` се користи за позивање адд.сх филе. Команда `басх` се користи за извршавање датотеке субтрацт.сх. Команда `евал` се користи за извршавање датотеке мултипли.сх. Две улазне вредности се шаљу као аргументи командне линије за наредбу `евал`. Последња команда је екец команда која ради само са апсолутном путањом. За ово је у скрипти наведено цело име путање датотеке дивиде.сх.

цаллпро.сх

#!/бин/басх
сцрипт1='адд.сх'
сцрипт2='субтрацт.сх'
сцрипт3='мултипли.сх'
сцрипт4='/хоме/фахмида/цоде/дивиде.сх'

извор '$ сцрипт1'

басх $ сцрипт2 педесет двадесет

Избацио 'Унесите вредност а'
читатидо
Избацио 'Унесите вредност б'
читатиб
евал басх $ сцрипт3 $ а $ б
екец $ сцрипт4 30

Излаз:

Покрените скрипту.

$басхцаллпро.сх

Следећи излаз ће се појавити након покретања скрипте.

Иди на врх

Креирање менија

У басх -у постоји корисна команда за креирање једноставног менија који се зове `одабери` команда. Помоћу ове команде можете креирати различите типове менија. Одређена листа података се користи за креирање менија помоћу ове команде. Направите басх датотеку са следећим кодом да бисте видели употребу `одабери` команда за креирање менија. У овом примеру, листа од пет ставки биће одштампана као мени и тражити од корисника да изабере било који језик са листе. Изабрана вредност биће сачувана у променљивој, $ језик који се касније штампа спајањем са другим низом. Скрипта ће непрестано тражити избор језика док корисник не притисне 6 да се прекине са скриптом.

мену.сх

#!/бин/басх

#Одштампајте поруку за корисника
Избацио „Изаберите свој омиљени језик“

# Дефинишите листу ставки менија
изаберитеЈезикуЦ.# Јава ПХП Питхон Басх излаз
урадити
#Одштампајте изабрану вредност
ако [[ $ језик==„Излаз“ ]]
онда
излаз 0
елсе
Избацио 'Изабрани језик је$ језик'
бити
Готово

Излаз:

Покрените скрипту.

$басхмену.сх

Према следећем излазу, корисник је први пут притиснуо 3 који је одштампао ПХП, а други пут притиснуо 6 који је завршио са скриптом.

Ако желите да сазнате више о креирању басх менија помоћу `селецт`, можете посетити овај водич.

Иди на врх

Обрада командне линије

Понекад морамо да наведемо улазне вредности приликом извршавања скрипте из командне линије. Овај задатак се може обавити на два начина у басх -у. Један начин је коришћењем променљивих аргумената, а други начин коришћењем функције гетоптс. Очитавање улазних података командне линије са терминала помоћу варијабле аргумента приказано је у овом одељку.

Направите басх датотеку са следећом скриптом да бисте видели употребу читања вредности аргумента командне линије. Ова скрипта ће прочитати три аргумента командне линије који ће бити ускладиштени у променљивим, $ операнд1, $ операнд2 и $ оператор. Да би се скрипта правилно извршила, прва и трећа вредност аргумента морају бити број, а друга вредност аргумента мора бити било који од четири аритметичка оператора („+“, „-“, „/“, „к“). ако наредба ће проверити вредност оператора $ и извршити операцију на основу оператора и одштампати вредност.

цл1.сх

#!/бин/басх

#Одштампајте променљиве аргумента
Избацио 'Вредности аргумената су: $ 1 $ 2 $ 3'

# Чувајте вредности аргумената
операнд1=1 УСД
операнд2=3 УСД
оператер=2 УСД

#Проверите вредност другог аргумента команде да бисте извршили аритметичку операцију
ако [[ $ оператор=='+' ]]
онда
((резултат=$ операнд1+$ операнд2))
елиф [[ $ оператор=='-' ]]
онда
((резултат=$ операнд1-$ операнд2))
елиф [[ $ оператор=='Икс' ]]
онда
((резултат=$ операнд1*$ операнд2))
елиф [[ $ оператор=='/' ]]
онда

((резултат=$ операнд1/$ операнд2))
бити

# одштампајте резултат
Избацио 'Резултат је =$ резултат'

Излаз:

Покрените скрипту.

$басхцл1.сх

Скрипта се извршава четири пута за четири врсте аритметичких оператора. Следећи излаз ће се појавити за вредности аргумената, 6 + 3, 6 - 3, 6 к 3 и 6/3 .

Вредности аргумената се могу проследити са паром име-вредност у басх-у. Направите басх датотеку са следећом скриптом да бисте показали како се читају вредности аргумената са именом. Скрипта ће читати две променљиве аргумента. Вредности аргумента са именом штампају се у првом изразу скрипте. Затим се фор петља користи за понављање низа који садржи вредности аргумената командне линије. Сваки елемент низа је одвојен у пар кључ-вредност помоћу команде `цут`. Затим се изјава случаја користи за штампање одређене поруке на основу вредности кључа.

цл2.сх

. #! /сам/басх

#Одштампајте променљиве аргумента
Избацио 'Вредности аргумената су: $ 1 $ 2'

#Прочитајте сваки аргумент засебно користећи фор лооп
заљуту '[заштићена е -пошта]'
урадити

#Одвојено име и вредност аргумента
кључ= $(Избацио $ арг | исећи -ф1 =)
вредност= $(Избацио $ арг | исећи -ф2 =)

#Одштампај поруку на основу назива аргумента
случају $ кључ у
име) Избацио 'Име ученика =$ вредност';;
означити) Избацио 'Добијена ознака =$ вредност' ;;
*)
есац
Готово

Излаз:

Покрените скрипту са следећим аргументима командне линије.

$басхцл2.схиме= Абир Хоссаинозначити=90

У горњим командама наведена су два аргумента командне линије. Су име = Абир Хоссаин и ознака = 90 . име и оцене су одвојене скриптом и две вредности се штампају након форматирања излаза.

Обрада аргумената командне линије помоћу гетоптс функција се не расправља у овом водичу. Ако желите да знате о обради командне линије помоћу гетоптс функцију коју можете посетити овај водич .

Иди на врх

Аритметика

Извођење аритметичких операција уобичајен је захтев сваког програмског језика. Басх изводи аритметичку операцију на другачији начин од другог стандардног програмског језика. Постоји више начина за извршавање аритметичких операција у басху. Један од једноставних начина извођења аритметичке операције приказан је у овом одељку. Направите басх датотеку са следећом скриптом. Четири врсте аритметичких операција приказане су у овој скрипти. Једноставне операције збрајања и дељења приказане су коришћењем првих двоструких заграда на почетку скрипте. Затим се приказује операција претходног увећања. Коначно, начин коришћења стенографског оператора приказан је у последњем делу скрипте.

аритх.сх

#!/бин/басх
# Израчунајте збир
резултат= $((педесет+25))
# Одштампајте збирну вредност
Избацио 'збир =$ резултат'

# Израчунајте поделу
резултат= $((педесет/25))
# Одштампајте вредност поделе
Избацио 'подела =$ резултат'

# Доделите вредност Н
Н=10
# Радите унапред повећање
((--Н))
# Одштампајте вредност Н.
Избацио 'Вредност након смањења =$ Н'

# Коришћење стенографског оператора
((Н +=10 ))
# Одштампајте вредност Н.
Избацио 'Вредност након додавања 10 =$ Н'

Излаз:

Покрените скрипту.

$басхаритх.сх

Следећи излаз ће се појавити након покретања скрипте.

Све аритметичке операције се изводе коришћењем двоструких заграда у овој горњој скрипти. Али можете користити „ дозволити ',' експр ' и ' пре нове ере ‘Наредба за извршавање аритметичке операције у басх -у. Ако желите да сазнате више о овим командама за извођење басх аритметичких операција, посетите овај водич.

Иди на врх

Манипулација низовима

Многе врсте задатака могу се обавити помоћу стринг података у басх -у. Неки спајају низ, упоређују низ, деле га на низ, мењају величину низа итд. Не постоје уграђене функције низа као други стандардни језици у басх-у за обављање низова. У овом одељку овог водича разматрају се неке уобичајене манипулације низовима.

Спојни низ

Додавање два или више низова назива се спајање стрингова. Низ се спаја у басх постављањем један за другим. Направите басх датотеку са следећом скриптом да бисте приказали употребу повезивања стрингова. Две променљиве низа се иницијализују и штампају након комбиновања променљивих. Овде је садржај $ стринг1 и $ стринг2 биће спојени и штампани.

цонцат.сх

#!/бин/басх

#Иницијализујте прву стринг променљиву
стринг1='Волим '
#Иницијализујте другу стринг променљиву
стринг2=„Басх програмирање“
#Одштампајте након комбиновања оба низа
Избацио '$ стринг1$ стринг2'

Излаз:

Покрените скрипту.

$басхцонцат.сх

Следећи излаз ће се појавити након покретања скрипте.

Више о спајању стрингова можете сазнати из овог водича.

Иди на врх

Упоређивање низа

Басх користи различите врсте оператора за упоређивање података низа. Направите басх датотеку са следећом скриптом да бисте показали како да упоредите два стринг података. Вредност низа се узима као улаз у скрипту која се упоређује са другим низом. Ако се вредност подудара, појавиће се порука, Волите Питхон биће штампано на други начин Волите ПЕРЛ биће штампани.

упореди.ш

#!/бин/басх
ИзбациоУнесите било коју вредност низа
читатитекст

#Проверите да ли су улазни подаци еквивалентни Питхону
ако [ $ тект=='Питхон' ];онда
Избацио 'Свиђа вам се Питхон.'
елсе
Избацио 'Ти волиш ПЕРЛ'
бити

Излаз:

Покрените скрипту.

$басхупореди.ш

Следећи излаз ће се појавити након покретања скрипте где је улазна вредност „ПЕРЛ“.

Више о поређењу стрингова можете сазнати из овај водич .

Сплиттинг Стринг

Басх нема уграђену функцију подјеле за подјелу стринг података. Подаци низа могу се поделити на више начина у басх -у на основу различитих типова граничника. Направите басх датотеку са следећом скриптом да бисте показали како се стринг подаци могу поделити на басх. Вредност низа се узима као улаз. Ова скрипта ће поделити вредност $ тект на основу простора. Овде, ИФС променљива се користи за постављање граничника. `читати` команда се овде користи за поделу текстуалне вредности и складиштење вредности у низ. за лооп се користи за понављање низа и штампање вредности сваког елемента.

сплит.сх

#!/бин/басх
#Унесите вредност низа
ИзбациоУнесите вредност низа
читатитекст
# Подесите граничник
ИФС=''
#Поделите вредност $ тект у низ на основу разделника размака
читати -доарр<<< '$ тект'
# Одштампајте сваку вредност низа
завредносту '$ {арр [@]}';
урадити
принтф '$ вредност н'
Готово

Излаз:

Покрените скрипту.

$басхсплит.сх

Следећи излаз ће се појавити након уношења уноса, Научите Басх програмирање . Ова улазна вредност је текст од три речи. Дакле, низ је подељен на три дела.

Више о поређењу стрингова можете сазнати из овај водич .

Промена случаја низа

Већина скриптних језика има уграђене функције за промену слова података низа. Али случај података низа може се променити у басх помоћу `тр` командом или помоћу „: Горњи“ и „: Ниже“ кључне речи. Направите басх датотеку са следећом скриптом да бисте знали начине мењања великих слова у басх -у. Овде се први низ података конвертује у велика слова помоћу ‘^^’ симбол, а други низ се конвертује у мала слова коришћењем `тр` команда. `тр` команда ће претражити сва велика слова у низу и претворити знакове у мала слова.

цасе.сх

#!/бин/басх

#Иницијализујте податке првог низа
тект1='[заштићена е -пошта]'

#Одштампајте вредност $ тект1 претварањем свих знакова у велика слова
Избацио $ {емаил ^^}

#Иницијализујте податке другог низа
тект2= „Основе програмирања на басху“

#Одштампајте вредност $ тект2 претварањем свих великих у мала слова
Избацио $ тект2 | НС [: горњи:] [: ниже:]

Излаз:

Покрените скрипту.

$басхцасе.сх

Следећи излаз ће се појавити након покретања скрипте.

Више о поређењу стрингова можете сазнати из овај водич .

Иди на врх

Читање низова података кроз петљу

Низ података ради као низ знакова за било који програмски језик. Како ' за ’Петља се може користити за читање стринг података у басх -у је приказано у овом одељку. Направите основну датотеку са следећом скриптом за читање сваког дела вредности низа помоћу фор петље.

реадстр.сх

#!/бин/бас
# Прочитајте сваку реч текста помоћу фор петље
завредностуБасх програмирањезапочетници
урадити
Избацио $ вредност
Готово

Излаз:

Покрените скрипту.

$басхреадстр.сх

Следећи излаз ће се појавити након покретања скрипте.

Можете сазнати више о понављању стринг података помоћу петље фром овај водич .

Иди на врх

Враћање повратних кодова из скрипте и хватање у другу скрипту

Једна басх скрипта може ухватити повратне кодове из друге скрипте позивом скрипте и употребом ‘$?’ за очитавање враћене вредности. Претпоставимо, басх датотека под именом прво.ш враћа код након извршења. Направите другу басх датотеку под називом друго.ш и додајте следећу скрипту да бисте ухватили повратну вредност и обавили неке друге задатке. Код обе датотеке је дат испод. прво.ш датотека ће бити позвана из друго.ш датотеку на почетку скрипте. прво.ш вратиће излазни код на основу улазне вредности. сецонд.сх ће ухватити код ‘$?’ и упоредите са 1. Ако су обе вредности једнаке, штампаће се, Улазни број је већи од 100 , у супротном ће се штампати, Улазни број је мањи или једнак 100 .

прво.ш

#!/бин/басх

Избацио „Унесите нумеричку вредност“
читатин

# Проверите да ли је улазна вредност мања или једнака 100 или није
ако [[ $ н -тхе 100 ]]
онда
излаз 0
елсе
излаз 1
бити

друго.ш

#! /бин/басх

#Извршите датотеку, фирст.сх
басх 'фирст.сх'

#Проверите да ли је повратни код једнак 1 или не
ако [ $? -ек 1 ]
онда
Избацио „Улазни број је већи од 100“
елсе
Избацио „Улазни број је мањи или једнак 100“
бити

Излаз:

Покрените скрипту.

$басхдруго.ш

Следећи излаз ће се појавити када се скрипта два пута изврши помоћу 55 и 110.

Иди на врх

Читање и писање у датотеке

Читање и писање датотека уобичајени су захтеви басх програмирања. Басх нема уграђену функцију попут другог језика за читање или писање датотеке. Постоји више начина за читање датотеке у басху. Најчешћи начин читања или писања датотеке у басх -у је коришћење `мачка` команда. Али ова команда се користи за читање целокупног садржаја датотеке одједном. Такође можете читати било коју датотеку ред по ред помоћу било које петље и `читати` команда. Користећи оператер преусмеравања, '>' , можете записати податке у било коју датотеку у басх -у. Ако желите да додате податке у било коју датотеку, морате је користити '>>' оператер. И операције читања и писања датотека приказане су у следећем делу овог одељка.

Читање датотеке у басх -у

Направите басх датотеку са следећом скриптом да бисте прочитали постојећу датотеку под називом „ хардваре.ткт ’. Садржај ове датотеке је дат у наставку. У скрипти чита читав садржај датотеке `мачка` наредба прва и следећа, док се лооп користи за читање датотеке ред по ред.

хардваре.ткт

Монитор
Тастатура
Миш
Скенер
Штампач

реадфиле.сх

#!/бин/басх

Избацио 'Читање датотеке помоћу наредбе цат'

# Прочитајте садржај датотеке помоћу команде `цат`
садржај=``мачкахардваре.ткт``
Избацио $ цонтент

Избацио 'Читање датотеке ред по ред помоћу петље'

# Доделите име датотеке
назив документа='хардваре.ткт'

# Свака линија датотеке ће се читати сваком итерацијом петље
док читатилине;
урадити
# одштампајте линију
Избацио $ линија
Готово<$ назив датотеке

Излаз:

Покрените следеће команде.

$мачкахардваре.ткт
$басхреадфиле.сх

Овде ће прва команда одштампати садржај датотеке, хардваре.ткт без покретања басх скрипте, а друга команда ће покренути скрипту реадфиле.сх и два пута одштампати садржај датотеке помоћу `мачка` командује и `читати` команда са вхиле петљом. Можете посетити ово Приручник да бисте сазнали више о читању датотеке ред по ред.

Писање датотеке у басх -у

Направите басх датотеку са следећом скриптом за писање новог садржаја у нову датотеку и додајте податке у ту датотеку.

вритефиле.сх

#!/бин/басх

Избацио „Унесите неки текст“
#Прочитајте податке о низу
читатистр1
#Додајте улазне податке у датотеку по први пут
Избацио $ стр1 >тест.ткт

Избацио „Унесите неки други текст“
#Прочитајте још један низ података
читатистр2
#Додајте улазне податке на крају датотеке
Избацио $ стр2 >>тест.ткт

#Прикажите цео садржај датотеке
Избацио ``мачкатест.ткт``

Излаз:

Покрените скрипту.

$басхвритефиле.сх

Следећи излаз ће се појавити након покретања скрипте.

Иди на врх

Цеви

Пипе се користи за преусмеравање било ког излаза команде на други улаз команде. Може се користити међу различитим типовима басх наредби за генерисање специфичног излаза. Стандардни улаз је повезан са стандардним излазом у Линук -у. Морате да поставите команду у низу са симболом пипе (|) да бисте добили жељени излаз. Две или више команди могу се извршити заједно у једној команди помоћу пипе -а. Морате извршити више команди у више редова без пипе да бисте извршили исти задатак. Дакле, коришћење цеви је веома корисно за обављање многих врста задатака у краткој форми.

синтакса:

команда1|цомманд2|...

Овде ће излаз наредбе1 бити прослеђен као улаз наредбе2.

Исти задатак се обавља са цевима и без цеви у следећем делу овог одељка. Претпоставимо текстуалну датотеку под називом маркс.ткт дат је са следећим подацима.

маркс.ткт

Асраф ЦСЕ-409 79

Кабир ЦСЕ-304 95

Кеиа ЦСЕ-101 67

Асраф ЦСЕ-304 88

Кеиа ЦСЕ-409 90

Асраф ЦСЕ-101 92

Морате сортирати податке датотеке и сазнати и одштампати све ставке имена ученика „К да ' . Овај задатак можете да обавите тако што ћете покренути више команди без употребе цеви која је приказана у следећем одељку. Следеће команде ће морати да се покрену да би се добио жељени излаз. Прва команда ће сортирати датотеку. Друга команда ће претраживати унос „К да ' користећи ` дршка `наредите и сачувајте излаз у а темп.ткт филе. Трећа команда броји укупне редове а темп.ткт датотеку помоћу `вц` команда.

$врстамаркс.ткт
$дршка 'Кеиа'маркс.ткт>темп.ткт
$Тоалет -тхетемп.ткт

Излаз:

У датотеци постоје два уноса ученика, „Кеиа“. Дакле, након покретања горњих наредби, појавит ће се сљедећи излаз.

Можете лако спојити горње три команде и добити исти излаз покретањем једне команде са цевчицом која је приказана у следећој команди. Овде није потребна привремена датотека да бисте добили излаз. Овде је излаз ` врста команда `ће бити прослеђена као улаз за` дршка команда `и излаз` дршка `команда ће бити прослеђена као улаз за `вц` команда.

$врстамаркс.ткт| дршка 'Кеиа' | Тоалет -тхе

Излаз:

Након што покренете горњу команду, добићете следећи излаз као и излаз претходне команде. Излаз наредбе ће бити 2.

Иди на врх

Закључак:

Најкорисније и најнужније теме басх скриптног језика покушавају се покрити у овом водичу. Надам се да ће читалац имати користи након читања овог водича и да ће моћи ефикасније да пише басх скрипту.