Návod na skriptovanie bash pre začiatočníkov

Bash Scripting Tutorial



Predvolený príkazový jazyk Linuxu je skript Bash. V Linuxe musíme denne vykonávať mnoho príkazov na mnohé účely. Tieto denné úlohy je možné automatizovať pomocou skriptu bash. Každý užívateľ sa môže naučiť tento skriptovací jazyk veľmi ľahko a rýchlo. Ak ste v programovaní bash noví, tento návod je pre vás.

Obsah:

  1. Komentáre
  2. príkaz echo
  3. Premenné
  4. Podmienené vyhlásenie
  5. Slučky
  6. Funkcie
  7. Vyvolávanie programov v skripte
  8. Vytváranie menu
  9. Spracovanie príkazového riadka
  10. Aritmetika
  11. Manipulácia so strunami
  12. Vrátenie návratových kódov zo skriptu a zachytenie v inom skripte
  13. Čítanie a zápis do súborov
  14. Potrubie

Komentáre

Pridávanie komentárov ku kódu je základnou súčasťou každého programovacieho jazyka. V čase spustenia nie sú komentáre analyzované so skriptom. Čitateľ môže akémukoľvek kódu správne porozumieť, ak je kód dobre okomentovaný. V bash skripte môžete pridať komentár niekoľkými spôsobmi. V tejto časti je ukázané, ako môžete do bash skriptu pridať jednoriadkové a viacriadkové komentáre. Vytvorte súbor bash pomocou nasledujúceho skriptu, aby ste vedeli, ako používať komentár bash. Tu sa symbol „#“ používa na pridanie jednoriadkového komentára a jednoduché úvodzovky (') s „:“ na pridanie viacriadkových komentárov.







bash_comment.sh



#!/bin/bash
#Vezmite číslo ako vstup
zahodil „Zadajte číslo“
čítaťdo
:'
Skontrolujte, či je zadané číslo
menej ako 10 alebo viac ako 10 alebo sa rovná 10
'

keby [[ $ a -lt 10 ]]
potom
zahodil „Číslo je menšie ako 10“
elif [[ $ a -gt 10 ]]
potom
zahodil „Číslo je väčšie ako 10“
inak
zahodil „Číslo sa rovná 10“
byť

Výkon:



Spustite skript.





$bashbash_comment.sh

Tu sa skript spustí trikrát so vstupnými hodnotami 3, 10 a 90. Zobrazí sa nasledujúci výstup.



Ak sa chcete dozvedieť viac o komentároch bash, môžete to skontrolovať tento návod .

Prejsť na začiatok

príkaz echo

Príkaz `echo 'sa používa v bashu na tlač výstupu v termináli. S príkazom echo v bash je možné použiť rôzne možnosti na vytlačenie výstupu rôznymi spôsobmi. Vytvorte súbor bash pomocou nasledujúceho skriptu, aby ste poznali dve jednoduché použitia príkazu `echo`. Tu prvý príkaz „echo“ vytlačí jednoduché textové údaje s novým riadkom a druhý príkaz echo vytlačí jednoduchý text bez nového riadka.

echo_test.sh

#!/bin/bash
#Vytlačte prvý text
zahodil „Vytlačiť text s novým riadkom“
#Vytlačte druhý text
zahodil -n „Vytlačiť text bez nového riadka“

Výkon:

Spustite skript.

$bashecho_test.sh

Po vykonaní vyššie uvedeného príkazu sa zobrazí nasledujúci výstup.

Existuje mnoho ďalších použití príkazu `echo` v bash. V tomto návode sa môžete dozvedieť viac o príkaze `echo`.

Prejsť na začiatok

Premenné

Deklarácia premenných je nevyhnutnou súčasťou každého programovacieho jazyka. Bash premenné je možné deklarovať rôznymi spôsobmi. Ak je v premennej priradená hodnota, na začiatku premennej sa nepoužije žiadny symbol. V čase načítania hodnoty premennej sa v názve premennej používa symbol „$“. Premennú je možné použiť z terminálu alebo ju je možné použiť v ľubovoľnom skriptu bash.

Nasledujúce príkazy budú deklarovať reťazcovú premennú s názvom mystr s konkrétnou hodnotou a potom vytlačte hodnotu premennej v termináli.

$mystr=„Mám rád programovanie v bash“
$zahodil $ mystr

Výkon:

Vytvorte súbor bash pomocou nasledujúceho skriptu. Tu sú deklarované dve premenné. Toto sú $ a a $ b . Ak je zadaná vstupná hodnota v $ a rovná sa $ b potom správa, Čísla sú rovnaké budú vytlačené inak Čísla nie sú rovnaké budú vytlačené.

var.sh

#!/bin/bash
zahodil „Zadajte číslo“
čítaťdo
b=100
keby [[ $ a -ekv $ b ]]
potom
zahodil „Čísla sú si rovné“
inak
zahodil „Čísla nie sú rovnaké“
byť

Výkon:

Spustite skript.

$bashvar.sh

Vyššie uvedený príkaz sa vykoná dvakrát s hodnotami 56 a 100. Zobrazí sa nasledujúci výstup.

Ak sa chcete dozvedieť viac o premenných bash, môžete to skontrolovať tento návod .

Prejsť na začiatok

Podmienené vyhlásenie

Rovnako ako iný programovací jazyk môžete v bash použiť podmienené vyhlásenie. „ Keď-tak-inak “A„ prípad Príkazy 'sa používajú hlavne na implementáciu príkazov podmienok v akomkoľvek programovacom jazyku. Použitie podmieneného príkazu pomocou „Keby“ vyhlásenie je uvedené v tejto časti tohto tutoriálu. Vytvorte súbor bash s nasledujúcim skriptom, v ktorom sa používa podmienené vyhlásenie. Tu budú od používateľa prijaté dve hodnoty ako vstup a uložené do premenných, $ kód a $ vek . Na kontrolu hodnoty sa používa príkaz „if“ $ vek je väčšia alebo rovná 18 a hodnotu $ kód je 1100 . Ak sú splnené obe podmienky, potom správa, Máte nárok na zobrazenie filmu budú vytlačené inak Nemáte oprávnenie vidieť film budú vytlačené.

podmienka

#!/bin/bash

zahodil „Zadajte svoj kód“
čítaťkód
zahodil „Zadajte svoj vek“
čítaťVek

keby [[ $ vek -dať 18 && $ kód -ekv „1100“ ]]
potom
zahodil „Máte nárok na sledovanie filmu“
inak
zahodil „Nemáte nárok na sledovanie filmu“
byť

Výkon:

Spustite skript.

$bashpodmienka

Nasledujúci výstup sa objaví po prevzatí rôznych vstupných hodnôt. 1100 je uvedený ako kód a 5 je daný ako vek pre prvé spustenie a ak podmienka pre tieto hodnoty vráti hodnotu false. 1100 je uvedený ako kód a 45 je daný ako vek pre druhé spustenie, ktoré vracia true pre podmienku if.

Ak sa chcete dozvedieť viac o podmienečnom vyhlásení bash, môžete si pozrieť tento návod.

Prejsť na začiatok

Slučky

Keď sa niektoré časti skriptu musia vykonať viackrát, na vykonanie úlohy sa použije slučka. Bash podporuje tri typy deklarácie slučiek ako ostatné jazyky. Tieto sú na slučky, kým a kým. Na základe programovacích požiadaviek sa v skripte používa konkrétna slučka. Použitie týchto troch typov slučiek je v tejto časti ukázané pomocou jednoduchých príkladov.

Použitie pre slučku

Vytvorte súbor bash s nasledujúcim skriptom, kde ` pre` slučka sa používa na iteráciu. `pre` loop sa používa hlavne na iteráciu zoznamu údajov alebo poľa. Tu sa používa zoznam názvov dní v týždni a každý názov dňa v týždni sa opakuje pomocou cyklu for. `keby` príkaz sa používa na vytlačenie konkrétnej správy podľa názvu týždňa.

for.sh

#Prečítajte si názov týždňa v každej iterácii cyklu
predeňvpondelok utorok streda štvrtok piatok sobota nedeľa
urobiť

#Skontrolujte, či je názov pracovného dňa pondelok alebo štvrtok
keby [[ $ deň=='Pondelok' || $ deň=='Štvrtok' ]]
potom
zahodil 'Stretnutie dňa$ deňo 9:30 hod.

#Skontrolujte, či je názov pracovného dňa utorok alebo streda alebo piatok
elif [[ $ deň=='Utorok' || $ deň=='Streda' || $ deň=='Piatok' ]]
potom
zahodil 'Tréning na$ deňo 11:00 hod.
inak

#Vytlačte „prázdniny“ na ďalšie dni
zahodil '$ deňsú prázdniny
byť
hotový

Výkon:

Spustite skript.

$bashfor.sh

Po spustení skriptu sa zobrazí nasledujúci výstup.

Ak chcete vedieť viac o použití bash for loop, môžete si pozrieť tento návod.

Použitie cyklu while

Vytvorte súbor bash s nasledujúcim skriptom, kde ` kým ` slučka sa používa na iteráciu. Tento skript vytlačí čísla od 1 do 20, ktoré sú párne a deliteľné piatimi. Tu, počítadlo dolárov premenná sa používa na ovládanie iterácie cyklu a hodnota tejto premennej sa v každej iterácii zvýši o 1. Kedy `keby` podmienka vráti true, potom vytlačí hodnotu počítadlo dolárov .

#!/bin/bash

#Vytlačte správu
zahodil „Vytlačte čísla, ktoré sú párne a deliteľné číslom 5“

#Inicializujte počítadlo
počítadlo=1

#Opakujte cyklus, kým hodnota počítadla $ nie je menšia alebo rovná 20
kým [ počítadlo dolárov -ten dvadsať ]
urobiť

#Skontrolujte, či je počítadlo $ deliteľné 2 a 5
keby [[ počítadlo dolárov%2-ekv 0 && počítadlo dolárov%5-ekv 0 ]]
potom
#Vytlačte počítadlo $ bez nového riadku
zahodil 'počítadlo dolárov'
byť

#Zvýšiť počítadlo dolárov o 1
((počítadlo ++))
hotový
zahodil 'Hotový'

Výkon:

$bashwhile.sh

Existujú iba čísla od 1 do 20, ktoré sú párne a deliteľné piatimi. Po spustení skriptu sa zobrazí nasledujúci výstup.

Ak chcete vedieť viac o bash ` kým` slučku, potom môžete skontrolovať tento návod .

Použitie do slučky

Vytvorte súbor bash s nasledujúcim skriptom, kde ` až` slučka sa používa na iteráciu. Tento skript vytlačí všetky nepárne čísla od 0 do 20. $ n premenná sa v tomto skripte používa na iteráciu cyklu.

do.sh

#!/bin/bash

#Inicializujte premennú, n
n=dvadsať

#Opakujte cyklus, kým hodnota $ n nie je väčšia ako 0
[ $ n -lt 0 ]
urobiť

#Skontrolujte, či je hodnota n nepárna
keby [[ $ n%2-gt 0 ]]
potom
zahodil $ n
byť

#Zvýšte hodnotu n o 1
((n=$ n-1))
hotový

Výkon:

Spustite skript.

$bashdo.sh

Skript vytlačí všetky párne čísla od 20 do 1. Po spustení skriptu sa zobrazí nasledujúci výstup.

Prejsť na začiatok

Funkcie

Keď sa blok kódu musí v skripte vykonať viackrát, potom sa na vykonanie úlohy použije funkcia. Túto funkciu budete musieť zavolať iba vtedy, keď sa skript definovaný vo funkcii musí vykonať mnohokrát, a nie viackrát pridať ten istý skript. Začiatočná a koncová prvá zátvorka sa používa s názvom funkcie na deklarovanie funkcie v bash skripte. Funkciu je možné vyvolať iba názvom funkcie v bash. Bash nepodporuje argument funkcie ako iný štandardný programovací jazyk. Hodnotu však možno do funkcie bash preniesť iným spôsobom, ako je uvedené v tejto časti. Hodnotu je možné vrátiť z funkcie pomocou príkazu return alebo bez použitia príkazu return.

Vytvorte súbor bash s nasledujúcim skriptom, aby ste vedeli, ako je možné funkcie deklarovať a volať v skriptu bash. V skripte sú deklarované tri funkcie. Prvá funkcia je deklarovaná na vytlačenie jednoduchej správy, Bash programovanie pre začiatočníkov . Druhá funkcia je deklarovaná na priradenie reťazcovej hodnoty v premennej, $ return_str ktorý vytlačí, Naučte sa programovanie bash s LinuxHint po vyvolaní funkcie. Tretia funkcia je deklarovaná tak, aby čítala hodnotu argumentu ako polomer kruhu, ktorý bude poskytnutý v čase volania funkcie. Tu, miestny slúži na čítanie hodnoty argumentu. Táto funkcia vypočíta plochu kruhu na základe hodnoty polomeru pomocou vzorca, πr2 a vytlačte vypočítanú hodnotu plochy.

func.sh

#!/bin/bash

#Deklarujte jednoduchú funkciu
funkciuprint_message()
{
zahodil „Bash programovanie pre začiatočníkov“
}

#Deklarujte funkciu, ktorá vráti hodnotu reťazca
funkciuret_strdata()
{
#Inicializujte premennú pomocou hodnoty reťazca
return_str=„Naučte sa programovať bash pomocou LinuxHint“
}

#Deklarujte funkciu na čítanie hodnoty argumentu
funkciuvypočítať_rozloha()

#Prečítajte si odovzdanú hodnotu argumentu
miestny polomer=1 dolár
oblasť= $(zahodil polomer $*polomer $*3.14

#Zavolaním funkcie vytlačíte jednoduchú správu
print_message

#Volajte funkciu, ktorá v premennej priradí reťazcovú hodnotu
ret_strdata

#Vytlačte hodnotu premennej
zahodil $ return_str

#Prečítajte si hodnotu polomeru
zahodil „Zadajte hodnotu polomeru“
čítaťpráca

#Zavolajte funkciu s hodnotou polomeru
vypočítať_rozloha$ rad

Výkon:

Spustite skript.

$bashfunc.sh

Po spustení skriptu sa zobrazí nasledujúci výstup. Prvé dva riadky sa vytlačia zavolaním funkcií, print_message () a ret_strdata () . Posledný riadok sa vytlačí zavolaním funkcie, vypočítať_rozloha () s prevzatou hodnotou vstupného polomeru.

Ak chcete vedieť o vrátení reťazca z funkcie bash, môžete táto tutoria .

Prejsť na začiatok

Vyvolávanie programov v skripte

Na vyvolanie iných programov v ľubovoľnom bash skripte môžete použiť mnoho typov príkazov, ako napríklad zdroj, bash, eval, exekútor Predpokladajme tri súbory bash, add.sh , subtract.sh, násobiť.sh a delenie.sh vytvorené na vykonávanie sčítania, odčítania, násobenia a delenia. Tu, odčítať.sh a divízia.sh prečítajte si argumenty príkazového riadka. Skript všetkých týchto štyroch súborov je uvedený nižšie.

add.sh

#!/bin/bash
do=60
b=40
((výsledok=$ a+$ b))
zahodil „Pridanie$ a+$ b=$ výsledok'

subract.sh

#!/bin/bash
do=1 dolár
b=2 doláre
((výsledok=$ a-$ b))
zahodil „Odčítanie$ a-$ b=$ výsledok'

znásobiť.sh

#!/bin/bash
((výsledok=1 dolár*2 doláre))
zahodil „Násobenie 1 dolárom a 2 dolármi je$ výsledok'

rozdeliť.sh

#!/bin/bash
do=1 dolár
b=2
((výsledok=$ a/$ b))
zahodil „Rozdelenie$ aod$ bje$ výsledok'

Vytvorte bash súbor s názvom, callpro.sh pomocou nasledujúceho skriptu na volanie uvedených súborov bash pomocou príkazov source, bash, eval a exec. Pred spustením nasledujúceho skriptu musíte pre vyššie uvedené štyri súbory nastaviť povolenie na spustenie. Na volanie sa používa príkaz `source` add.sh súbor. Na spustenie súboru subtract.sh sa používa príkaz `bash`. Príkaz `eval` sa používa na spustenie súboru multiply.sh. Dve vstupné hodnoty sú odoslané ako argumenty príkazového riadka pre príkaz `eval`. Posledný príkaz je príkaz exec, ktorý pracuje iba s absolútnou cestou. Za týmto účelom je v skripte uvedený úplný názov cesty k súboru Divide.sh.

callpro.sh

#!/bin/bash
skript 1='add.sh'
skript 2='subtract.sh'
skript 3='multiply.sh'
skript 4='/home/fahmida/code/divide.sh'

zdroj '$ script1'

bash $ script2 päťdesiat dvadsať

zahodil „Zadajte hodnotu“
čítaťdo
zahodil „Zadajte hodnotu b“
čítaťb
eval bash $ script3 $ a $ b
exekútor $ script4 30

Výkon:

Spustite skript.

$bashcallpro.sh

Po spustení skriptu sa zobrazí nasledujúci výstup.

Prejsť na začiatok

Vytváranie menu

V bash je užitočný príkaz na vytvorenie jednoduchej ponuky, ktorá sa nazýva `vybrať` príkaz. Pomocou tohto príkazu je možné vytvoriť rôzne typy ponúk. Na vytvorenie ponuky týmto príkazom sa používa konkrétny zoznam údajov. Vytvorte súbor bash s nasledujúcim kódom, aby ste videli, ako sa používa `vybrať` príkaz na vytvorenie ponuky. V tomto prípade sa zoznam piatich položiek vytlačí ako ponuka a vyzve používateľa, aby si v zozname vybral ľubovoľný jazyk. Zvolená hodnota bude uložená v premennej, $ jazyk ktorý sa vytlačí neskôr zreťazením s iným reťazcom. Skript bude priebežne žiadať o výber jazyka, kým používateľ nestlačí 6 ukončiť zo skriptu.

menu.sh

#!/bin/bash

#Tlačová správa pre používateľa
zahodil „Vyberte si svoj obľúbený jazyk“

# Definujte zoznam položky ponuky
vyberteJazykvC.# Java PHP Python Bash Ukončiť
urobiť
#Vytlačte zvolenú hodnotu
keby [[ $ jazyk=='Východ' ]]
potom
východ 0
inak
zahodil „Vybratý jazyk je$ jazyk'
byť
hotový

Výkon:

Spustite skript.

$bashmenu.sh

Podľa nasledujúceho výstupu používateľ stlačil 3 prvýkrát, keď vytlačil PHP, a druhýkrát stlačil 6, ktorý sa ukončil zo skriptu.

Ak sa chcete dozvedieť viac o vytváraní bash menu pomocou `select`, môžete navštíviť tento návod.

Prejsť na začiatok

Spracovanie príkazového riadka

Niekedy pri spustení skriptu z príkazového riadka potrebujeme zadať vstupné hodnoty. Túto úlohu je možné vykonať v bash dvoma spôsobmi. Jeden spôsob je pomocou premenných argumentov a druhý spôsob je použitie funkcie getopts. V tejto časti je zobrazené čítanie vstupných údajov príkazového riadka z terminálu pomocou premennej argumentu.

Vytvorte súbor bash pomocou nasledujúceho skriptu, aby ste videli použitie hodnoty argumentu príkazového riadka. Tento skript bude čítať tri argumenty príkazového riadka, ktoré budú uložené v premenných, $ operand1, $ operand2 a $ operátor. Na správne spustenie skriptu musia byť hodnoty prvého a tretieho argumentu číslo a hodnota druhého argumentu musí byť ktorýkoľvek zo štyroch aritmetických operátorov („+“, „-“, „/“, „x“). keby príkaz skontroluje hodnotu operátora $ a vykoná operáciu na základe operátora a hodnotu vytlačí.

cl1.sh

#!/bin/bash

#Vytlačte premenné argumentov
zahodil „Hodnoty argumentov sú: $ 1 $ 2 $ 3“

# Uložte hodnoty argumentov
operand1=1 dolár
operand 2=3 doláre
operátor=2 doláre

#Skontrolujte hodnotu argumentu druhého príkazu, aby ste vykonali aritmetickú operáciu
keby [[ $ operátor=='+' ]]
potom
((výsledok=$ operand1+$ operand2))
elif [[ $ operátor=='-' ]]
potom
((výsledok=$ operand1-$ operand2))
elif [[ $ operátor=='X' ]]
potom
((výsledok=$ operand1*$ operand2))
elif [[ $ operátor=='/' ]]
potom

((výsledok=$ operand1/$ operand2))
byť

# vytlačte výsledok
zahodil -A 'Výsledok je =$ výsledok'

Výkon:

Spustite skript.

$bashcl1.sh

Skript sa vykoná štyrikrát pre štyri typy aritmetických operátorov. Nasledujúci výstup sa objaví pre hodnoty argumentov, 6 + 3, 6 - 3, 6 x 3 a 6/3 .

Hodnoty argumentov je možné odovzdať s dvojicou názov-hodnota v bash. Vytvorte súbor bash s nasledujúcim skriptom, ktorý vám ukáže, ako čítať hodnoty argumentov s názvom. Skript bude čítať dve premenné argumentov. Hodnoty argumentov s názvom sú vytlačené v prvom príkaze skriptu. Ďalej sa slučka for používa na iteráciu poľa, ktoré obsahuje hodnoty argumentov príkazového riadka. Každý prvok poľa je oddelený do páru kľúč-hodnota pomocou príkazu `cut`. Ďalej sa na vytlačenie konkrétnej správy na základe hodnoty kľúča použije príkaz case.

cl2.sh

. #! /dopoludnia/bash

#Vytlačte premenné argumentov
zahodil „Hodnoty argumentov sú: $ 1 $ 2“

#Prečítajte si každý argument oddelene pomocou cyklu for
prenahnevanýv '[email protected]'
urobiť

#Samostatný názov a hodnota argumentu
kľúč= $(zahodil $ arg | rezať -f1 -d=)
hodnotu= $(zahodil $ arg | rezať -f2 -d=)

#Tlač správa podľa názvu argumentu
prípad $ kľúč v
názov) zahodil „Meno študenta =hodnota $';;
značka) zahodil „Získaná značka =hodnota $' ;;
*)
esac
hotový

Výkon:

Spustite skript s nasledujúcimi argumentmi príkazového riadka.

$bashcl2.shnázov= Abir Hossainznačka=90

Vyššie uvedené príkazy poskytujú dva argumenty príkazového riadka. Toto sú meno = Abir Hossain a značka = 90 . názov a značky sú oddelené skriptom a po formátovaní výstupu sú vytlačené dve hodnoty.

Spracovanie argumentov príkazového riadka pomocou getopts funkcia nie je v tomto návode diskutovaná. Ak chcete vedieť o spracovaní príkazového riadka pomocou getopts funkciu, potom môžete navštíviť tento návod .

Prejsť na začiatok

Aritmetika

Aritmetické operácie sú bežnou požiadavkou každého programovacieho jazyka. Bash robí aritmetickú operáciu iným spôsobom ako v inom štandardnom programovacom jazyku. Existuje niekoľko spôsobov, ako vykonávať aritmetické operácie v bash. V tejto časti je uvedený jeden z jednoduchých spôsobov, ako vykonať aritmetickú operáciu. Vytvorte súbor bash pomocou nasledujúceho skriptu. Tento skript zobrazuje štyri typy aritmetických operácií. Jednoduché operácie sčítania a delenia sú znázornené pomocou dvojitých prvých zátvoriek na začiatku skriptu. Ďalej je zobrazená operácia pred prírastkom. Nakoniec, spôsob použitia stenografického operátora je zobrazený v poslednej časti skriptu.

arith.sh

#!/bin/bash
# Vypočítajte súčet
výsledok= $((päťdesiat+25))
# Vytlačte súhrnnú hodnotu
zahodil 'súčet =$ výsledok'

# Vypočítajte rozdelenie
výsledok= $((päťdesiat/25))
# Hodnota rozdelenia tlače
zahodil 'rozdelenie =$ výsledok'

# Priraďte hodnotu N.
N.=10
# Vykonávanie predbežného prírastku
((--N))
# Vytlačte hodnotu N.
zahodil „Hodnota po znížení =$ N'

# Používanie skráteného operátora
((N +=10 ))
# Vytlačte hodnotu N.
zahodil 'Hodnota po sčítaní 10 =$ N'

Výkon:

Spustite skript.

$basharith.sh

Po spustení skriptu sa zobrazí nasledujúci výstup.

Všetky aritmetické operácie sa vykonávajú pomocou dvojitých zátvoriek v tomto vyššie uvedenom skripte. Môžete však použiť „ nechaj “,„ expr “A„ bc „Príkaz vykonať aritmetickú operáciu v bash. Ak sa chcete dozvedieť viac o týchto príkazoch na vykonávanie bash aritmetických operácií, môžete navštíviť tento návod.

Prejsť na začiatok

Manipulácia so strunami

S reťazcovými údajmi v bash je možné vykonať mnoho typov úloh. Niektoré z nich spájajú reťazce, porovnávajú reťazce, delia reťazce, meniace sa veľkosť reťazca atď. V bash nie sú vstavané funkcie reťazcov ako ostatné štandardné jazyky na vykonávanie operácií reťazca. V tejto časti tohto tutoriálu sú prediskutované niektoré bežné manipulácie s reťazcami.

Reťazovitý reťazec

Spojenie dvoch alebo viacerých reťazcov dohromady sa nazýva zreťazenie reťazcov. Reťazec je spojený dohromady v bash umiestnením jedného za druhým. Vytvorte súbor bash pomocou nasledujúceho skriptu, ktorý ukáže použitie zreťazenia reťazcov. Dve reťazcové premenné sa inicializujú a vytlačia po skombinovaní premenných. Tu je obsah $ string1 a $ string2 budú zlúčené a vytlačené.

concat.sh

#!/bin/bash

#Inicializujte prvú premennú reťazca
reťazec 1='Mám rád '
#Inicializujte premennú druhého reťazca
reťazec2=„Bash programovanie“
#Tlač po spojení oboch reťazcov
zahodil '$ string1$ string2'

Výkon:

Spustite skript.

$bashconcat.sh

Po spustení skriptu sa zobrazí nasledujúci výstup.

Viac o zreťazení reťazcov sa môžete dozvedieť z tohto tutoriálu.

Prejsť na začiatok

Porovnanie reťazca

Na porovnanie reťazcových údajov používa Bash rôzne typy operátorov. Vytvorte súbor bash s nasledujúcim skriptom, ktorý ukáže, ako porovnať údaje dvoch reťazcov. Hodnota reťazca sa považuje za vstup v skripte, ktorý sa porovnáva s iným reťazcom. Ak sa hodnota zhoduje, potom správa, Máte radi Python budú vytlačené inak Máte radi PERL budú vytlačené.

porovnať.sh

#!/bin/bash
zahodilZadajte ľubovoľnú hodnotu reťazca
čítaťtext

#Skontrolujte, či sú vstupné údaje ekvivalentné s jazykom Python
keby [ $ text==„Python“ ];potom
zahodil 'Máš rád Python.'
inak
zahodil „Páči sa ti PERL“
byť

Výkon:

Spustite skript.

$bashporovnať.sh

Po spustení skriptu sa zobrazí nasledujúci výstup, kde je vstupná hodnota „PERL“.

Môžete vedieť viac o porovnávaní reťazcov z tento návod .

Štiepací reťazec

Bash nemá vstavanú funkciu rozdelenia na delenie reťazcových údajov. Reťazcové údaje je možné v bash rozdeliť niekoľkými spôsobmi na základe rôznych typov oddeľovačov. Vytvorte súbor bash pomocou nasledujúceho skriptu, ktorý ukáže, ako je možné reťazcové údaje rozdeliť na bash. Ako vstup sa považuje hodnota reťazca. Tento skript rozdelí hodnotu $ text na základe priestoru. Tu, IFS premenná slúži na nastavenie oddeľovača. `čítať` Tu sa používa príkaz na rozdelenie textovej hodnoty a uloženie hodnôt do poľa. pre loop sa používa na iteráciu poľa a vytlačenie hodnoty každého prvku.

split.sh

#!/bin/bash
#Zadajte reťazcovú hodnotu
zahodilZadajte hodnotu reťazca
čítaťtext
# Nastavte oddeľovač
IFS=''
#Rozdeľte hodnotu textu $ do poľa na základe oddeľovača medzier
čítať -doarr<<< '$ text'
# Vytlačte každú hodnotu poľa
prehodnotuv '$ {arr [@]}';
urobiť
printf 'hodnota $ n'
hotový

Výkon:

Spustite skript.

$bashsplit.sh

Po zadaní vstupu sa zobrazí nasledujúci výstup, Naučte sa programovanie v Bash . Táto vstupná hodnota je text z troch slov. Reťazec je teda rozdelený na tri časti.

Môžete vedieť viac o porovnávaní reťazcov z tento návod .

Prebaľovací prípad reťazca

Väčšina skriptovacích jazykov má vstavané funkcie na zmenu veľkosti písmen v reťazcových údajoch. Ale prípad reťazcových údajov je možné v bash zmeniť pomocou `tr` príkazom alebo pomocou „: Horný“ a „: Nižšie“ Kľúčové slová. Vytvorte súbor bash pomocou nasledujúceho skriptu, aby ste poznali spôsoby zmeny veľkých a malých písmen v bash. Tu sa údaje prvého reťazca prevedú na veľké písmená pomocou „^^“ symbol a druhý reťazec sa prevedie na malé písmená pomocou `tr` príkaz. `tr` príkaz vyhľadá všetky veľké písmená v reťazci a prevedie znaky na malé písmená.

prípad.sh

#!/bin/bash

#Inicializujte údaje prvého reťazca
text1='[email protected]'

#Vytlačte hodnotu $ text1 prevedením všetkých znakov na veľké písmená
zahodil $ {email ^^}

#Inicializujte údaje druhého reťazca
text2= „Základy programovania v Bash“

#Vytlačte hodnotu $ text2 prevedením všetkých veľkých písmen na malé písmená
zahodil $ text2 | NS [: horný:] [: nižšie:]

Výkon:

Spustite skript.

$bashprípad.sh

Po spustení skriptu sa zobrazí nasledujúci výstup.

Môžete vedieť viac o porovnávaní reťazcov z tento návod .

Prejsť na začiatok

Čítanie údajov reťazca cez slučku

Reťazcové údaje fungujú ako pole znakov pre akýkoľvek programovací jazyk. Ako ' pre V tejto časti je zobrazená slučka ', ktorá môže byť použitá na čítanie údajov reťazca v bash. Vytvorte základný súbor s nasledujúcim skriptom na prečítanie každej časti hodnoty reťazca pomocou cyklu for.

readstr.sh

#!/bin/bas
# Prečítajte si každé slovo textu pomocou slučky for
prehodnotuvBash programovanieprezačiatočníci
urobiť
zahodil hodnota $
hotový

Výkon:

Spustite skript.

$bashreadstr.sh

Po spustení skriptu sa zobrazí nasledujúci výstup.

Môžete sa dozvedieť viac o iterácii reťazcových údajov pomocou slučky z tento návod .

Prejsť na začiatok

Vrátenie návratových kódov zo skriptu a zachytenie v inom skripte

Jeden skript bash môže zachytiť návratové kódy z iného skriptu zavolaním skriptu a použitím „$?“ prečítať návratovú hodnotu. Predpokladajme, že bash súbor s názvom prvý.sh vráti kód po spustení. Vytvorte ďalší bash súbor s názvom sekunda.sh a pridajte nasledujúci skript na zachytenie návratovej hodnoty a vykonanie ďalších úloh. Kód oboch súborov je uvedený nižšie. prvý.sh súbor sa bude volať z sekunda.sh súbor na začiatku skriptu. prvý.sh vráti výstupný kód na základe vstupnej hodnoty. second.sh zachytí kód do „$?“ a porovnajte s 1. Ak sú obe hodnoty rovnaké, vytlačí sa, Vstupné číslo je väčšie ako 100 , inak vytlačí, Vstupné číslo je menšie alebo rovné 100 .

prvý.sh

#!/bin/bash

zahodil „Zadajte číselnú hodnotu“
čítaťn

# Skontrolujte, či je vstupná hodnota menšia alebo rovná 100 alebo nie
keby [[ $ n -ten 100 ]]
potom
východ 0
inak
východ 1
byť

sekunda.sh

#! /bin/bash

#Spustite súbor, first.sh
bash 'first.sh'

#Skontrolujte, či je návratový kód rovný 1 alebo nie
keby [ $? -ekv 1 ]
potom
zahodil „Vstupné číslo je väčšie ako 100“
inak
zahodil „Vstupné číslo je menšie alebo rovné 100“
byť

Výkon:

Spustite skript.

$bashsekunda.sh

Nasledujúci výstup sa objaví, keď skript dvakrát spustia 55 a 110.

Prejsť na začiatok

Čítanie a zápis do súborov

Čítanie a zápis súborov sú bežnými požiadavkami programovania bash. Bash nemá vstavanú funkciu ako iný jazyk na čítanie alebo zápis súboru. Existuje niekoľko spôsobov, ako čítať súbor v bash. Najbežnejším spôsobom čítania alebo zápisu súboru v bash je použitie „mačka“ príkaz. Tento príkaz sa však používa na čítanie celého obsahu súboru naraz. Môžete tiež prečítať ľubovoľný súbor po riadkoch pomocou ľubovoľnej slučky a `čítať` príkaz. Pomocou operátora presmerovania '>' , môžete zapísať údaje do akéhokoľvek súboru v bash. Ak chcete pripojiť údaje do ľubovoľného súboru, musíte použiť '>>' operátor. Operácie so súbormi na čítanie aj zápis sú uvedené v ďalšej časti tejto časti.

Čítanie súboru v bash

Vytvorte súbor bash pomocou nasledujúceho skriptu na čítanie existujúceho súboru s názvom „ hardware.txt “. Obsah tohto súboru je uvedený nižšie. V skripte je prečítaný celý obsah súboru „mačka“ príkaz prvý a ďalší, zatiaľ čo slučka sa používa na čítanie súboru po riadkoch.

hardware.txt

Monitor
Klávesnica
Myš
Skener
Tlačiareň

readfile.sh

#!/bin/bash

zahodil „Čítanie súboru pomocou príkazu mačka“

# Prečítajte si obsah súboru pomocou príkazu `mačka`
obsah=kathardware.txt
zahodil $ obsah

zahodil „Čítanie súboru po riadkoch pomocou slučky“

# Priraďte názov súboru
názov súboru='hardware.txt'

# Každý riadok súboru bude prečítaný každou iteráciou slučky
kým čítaťčiara;
urobiť
# vytlačte riadok
zahodil $ riadok
hotový<$ názov súboru

Výkon:

Spustite nasledujúce príkazy.

$kathardware.txt
$bashreadfile.sh

Tu prvý príkaz vytlačí obsah súboru, hardware.txt bez spustenia akéhokoľvek bash skriptu a druhý príkaz spustí skript z readfile.sh a dvakrát vytlačte obsah súboru pomocou „mačka“ velenie a `čítať` príkaz pomocou cyklu while. Toto môžete navštíviť návod vedieť viac o čítaní súborov po riadkoch.

Zápisový súbor v bash

Vytvorte súbor bash s nasledujúcim skriptom na zapísanie nového obsahu do nového súboru a pripojenie údajov do tohto súboru.

writefile.sh

#!/bin/bash

zahodil „Zadajte nejaký text“
#Prečítajte si údaje reťazca
čítaťstr1
#Pridajte vstupné údaje do súboru prvýkrát
zahodil $ str1 >test.txt

zahodil „Zadajte iný text“
#Prečítajte si ďalšie údaje reťazca
čítaťstr2
#Pridajte vstupné údaje na koniec súboru
zahodil $ str2 >>test.txt

#Zobrazte celý obsah súboru
zahodil kattest.txt

Výkon:

Spustite skript.

$bashwritefile.sh

Po spustení skriptu sa zobrazí nasledujúci výstup.

Prejsť na začiatok

Potrubie

Pipe sa používa na presmerovanie akéhokoľvek výstupu príkazu na iný vstup príkazu. Môže byť použitý medzi rôznymi typmi príkazov bash na generovanie konkrétneho výstupu. Štandardný vstup je spojený so štandardným výstupom v Linuxe potrubím. Na dosiahnutie požadovaného výstupu musíte nastaviť príkaz v poradí so symbolom potrubia (|). Dva alebo viac príkazov je možné vykonať súčasne v jednom príkaze pomocou potrubia. Na vykonanie tej istej úlohy musíte vykonať viac príkazov na viacerých riadkoch bez potrubia. Použitie potrubia je teda veľmi výhodné pri vykonávaní mnohých typov úloh v krátkej forme.

syntax:

príkaz 1|príkaz 2|...

Tu bude výstup príkazu1 odovzdaný ako vstup príkazu2.

Rovnaký typ úlohy sa vykonáva s potrubím a bez potrubia v ďalšej časti tejto časti. Predpokladajme textový súbor s názvom marks.txt je uvedený s nasledujúcimi údajmi.

marks.txt

Asraf CSE-409 79

Kabir CSE-304 95

Keya CSE-101 67

Asraf CSE-304 88

Keya CSE-409 90

Asraf CSE-101 92

Musíte zoradiť údaje v súbore a nájsť a vytlačiť všetky údaje o mene študenta „K áno ' . Túto úlohu môžete vykonať spustením viacerých príkazov bez použitia potrubia, ktoré je zobrazené v nasledujúcej časti. Na získanie požadovaného výstupu je potrebné spustiť nasledujúce príkazy. Prvý príkaz súbor zoradí. Druhý príkaz vyhľadá záznam „K áno ' pomocou ` uchopenie `príkaz a uložte výstup do súbor temp.txt súbor. Tretí príkaz spočíta celkové riadky a temp.txt súbor pomocou `wc ' príkaz.

$triediťmarks.txt
$uchopenie „Keya“marks.txt>temp.txt
$wc -tentemp.txt

Výkon:

V spise sú dva záznamy študenta „Keya“. Po spustení vyššie uvedených príkazov sa teda zobrazí nasledujúci výstup.

Vyššie uvedené tri príkazy môžete ľahko zlúčiť a získať rovnaký výstup spustením jedného príkazu s kanálom, ktorý je znázornený v nasledujúcom príkaze. Na získanie výstupu tu nie je potrebný žiadny dočasný súbor. Tu je výstup súboru ` triediť Príkaz `bude odovzdaný ako vstup` uchopenie `príkaz a výstup súboru` uchopenie `príkaz bude odoslaný ako vstup pre súbor `wc ' príkaz.

$triediťmarks.txt| uchopenie „Keya“ | wc -ten

Výkon:

Po spustení vyššie uvedeného príkazu získate nasledujúci výstup ako výstup predchádzajúceho príkazu. Výstup príkazu bude 2.

Prejsť na začiatok

Záver:

V tomto návode sa pokúsime pokryť najužitočnejšie a najnutnejšie témy skriptovacieho jazyka bash. Dúfam, že čitateľ bude mať po prečítaní tohto tutoriálu prospech a bude môcť písať bash skript efektívnejšie.