Výukový program pro skriptování bashe pro začátečníky

Bash Scripting Tutorial



Výchozí příkazový jazyk Linuxu je Bash skript. V Linuxu musíme denně spouštět mnoho příkazů pro mnoho účelů. Tyto denní úkoly lze automatizovat pomocí skriptu bash. Každý uživatel se může naučit tento skriptovací jazyk velmi snadno a rychle. Pokud jste v programování bash noví, pak je tento návod pro vás.

Obsah:

  1. Komentáře
  2. příkaz echo
  3. Proměnné
  4. Podmíněné prohlášení
  5. Smyčky
  6. Funkce
  7. Volání programů ve skriptu
  8. Vytváření nabídek
  9. Zpracování příkazového řádku
  10. Aritmetický
  11. Manipulace se strunami
  12. Vrácení návratových kódů ze skriptu a zachycení v jiném skriptu
  13. Čtení a zápis do souborů
  14. Potrubí

Komentáře

Přidávání komentářů pomocí kódu je nezbytnou součástí každého programovacího jazyka. Komentáře nejsou v době spuštění analyzovány se skriptem. Pokud je kód dobře okomentován, může čtenář správně porozumět jakémukoli kódu. V bash skriptu můžete přidat komentář několika způsoby. V této části je ukázáno, jak můžete do skriptu bash přidat jednorázové a víceřádkové komentáře. Vytvořte soubor bash s následujícím skriptem, který zná použití bash komentáře. Zde je symbol „#“ použit pro přidání jednorázového komentáře a jednoduchý citát („) s‘: ’pro přidání víceřádkových komentářů.







bash_comment.sh



#!/bin/bash
#Vezměte číslo jako vstup
vyhodil „Zadejte číslo“
čístna
:'
Zkontrolujte, zda je zadané číslo
menší než 10 nebo větší než 10 nebo rovno 10
'

-li [[ $ a -lt 10 ]]
pak
vyhodil 'Číslo je menší než 10'
elif [[ $ a -gt 10 ]]
pak
vyhodil 'Číslo je větší než 10'
jiný
vyhodil 'Číslo se rovná 10'
být

Výstup:



Spusťte skript.





$bashbash_comment.sh

Zde se skript spustí třikrát se vstupní hodnotou 3, 10 a 90. Zobrazí se následující výstup.



Pokud se chcete dozvědět více o komentování bash, můžete to zkontrolovat tento návod .

Přejít na začátek

příkaz echo

Příkaz `echo` se v bashu používá k tisku výstupu v terminálu. S příkazem echo v bashu lze použít různé možnosti pro tisk výstupu různými způsoby. Pomocí následujícího skriptu vytvořte soubor bash, který zná dvě jednoduchá použití příkazu `echo`. Zde první příkaz `echo` vytiskne jednoduchá textová data s novým řádkem a druhý příkaz echo vytiskne jednoduchý text bez nového řádku.

echo_test.sh

#!/bin/bash
#Vytiskněte první text
vyhodil 'Tisk textu s novým řádkem'
#Vytiskněte druhý text
vyhodil -n „Tisk textu bez nového řádku“

Výstup:

Spusťte skript.

$bashecho_test.sh

Po provedení výše uvedeného příkazu se zobrazí následující výstup.

V bash existuje mnoho dalších použití příkazu `echo`. V tomto výukovém programu se můžete dozvědět více o příkazu `echo`.

Přejít na začátek

Proměnné

Deklarace proměnných je nezbytnou součástí každého programovacího jazyka. Bash proměnné lze deklarovat různými způsoby. Když je v proměnné přiřazena hodnota, pak se na začátku proměnné nepoužívá žádný symbol. V době čtení hodnoty proměnné se s názvem proměnné používá symbol „$“. Proměnnou lze použít z terminálu nebo ji lze použít v jakémkoli skriptu bash.

Následující příkazy budou deklarovat řetězcovou proměnnou s názvem mystr s konkrétní hodnotou a dále vytiskněte hodnotu proměnné v terminálu.

$mystr='Mám rád programování bash'
$vyhodil $ mystr

Výstup:

Vytvořte soubor bash s následujícím skriptem. Zde jsou deklarovány dvě proměnné. Tyto jsou $ a a $ b . Pokud je vstupní hodnota, která je uložena v $ a je rovný $ b pak zpráva, Čísla jsou stejná budou vytištěny jinak Čísla nejsou stejná budou vytištěny.

var.sh

#!/bin/bash
vyhodil „Zadejte číslo“
čístna
b=100
-li [[ $ a -ekv $ b ]]
pak
vyhodil „Čísla jsou stejná“
jiný
vyhodil „Čísla nejsou stejná“
být

Výstup:

Spusťte skript.

$bashvar.sh

Výše uvedený příkaz se provede dvakrát s hodnotami 56 a 100. Zobrazí se následující výstup.

Pokud se chcete dozvědět více o bash proměnných, můžete to zkontrolovat tento návod .

Přejít na začátek

Podmíněné prohlášení

Stejně jako jiný programovací jazyk můžete v bash použít podmíněné příkazy. ' Jestliže pak jinak ' a ' případ Příkazy ’se používají hlavně k implementaci příkazů podmínek v jakémkoli programovacím jazyce. Použití podmíněného příkazu pomocí 'li' prohlášení je uvedeno v této části tohoto kurzu. Vytvořte soubor bash s následujícím skriptem, kde se používá podmíněné prohlášení. Zde budou od uživatele převzaty dvě hodnoty jako vstup a uloženy do proměnných, $ kód , a $ věk . Ke kontrole hodnoty se používá příkaz „if“ $ věk je větší nebo rovno 18 a hodnota $ kód je 1100 . Pokud jsou splněny obě podmínky, pak zpráva, Na film máte nárok budou vytištěny jinak Nemáte nárok na film budou vytištěny.

kond

#!/bin/bash

vyhodil 'Vložte svůj kód'
čístkód
vyhodil 'Zadejte svůj věk'
číststáří

-li [[ $ věk -dát 18 && $ kód -ekv '1100' ]]
pak
vyhodil „Máte nárok na film“
jiný
vyhodil „Nemáte nárok na film“
být

Výstup:

Spusťte skript.

$bashkond

Následující výstup se objeví po převzetí různých vstupních hodnot. 1100 je uveden jako kód a 5 je uveden jako věk pro první spuštění a pokud podmínka pro tyto hodnoty vrátí hodnotu false. 1100 je uveden jako kód a 45 je uveden jako věk pro druhé provedení, které vrací true pro podmínku if.

Pokud se chcete dozvědět více o podmíněném příkazu bash, můžete se podívat na tento tutoriál.

Přejít na začátek

Smyčky

Když některé části skriptu potřebují provést vícekrát, pak se k provedení úkolu použije smyčka. Bash podporuje tři typy deklarací smyček jako ostatní jazyky. Ty jsou pro smyčky, zatímco a dokud. Na základě požadavků na programování je ve skriptu použita konkrétní smyčka. Použití těchto tří typů smyček je v této části ukázáno pomocí jednoduchých příkladů.

Použití pro smyčku

Vytvořte soubor bash s následujícím skriptem kde ` pro` smyčka se používá k iteraci. `pro` smyčka se používá hlavně pro iteraci seznamu dat nebo pole. Zde se používá seznam názvů dnů v týdnu a každý název dne v týdnu se opakuje pomocí cyklu for. `kdyby` příkaz se používá k tisku konkrétní zprávy podle názvu dne v týdnu.

for.sh

#Přečtěte si název pracovního dne v každé iteraci smyčky
prodenvpondělí úterý středa čtvrtek pátek sobota neděle
dělat

#Zkontrolujte, zda je název pracovního dne pondělí nebo čtvrtek
-li [[ $ den=='Pondělí' || $ den=='Čtvrtek' ]]
pak
vyhodil 'Setkání dne.'$ denv 9:30 hod.

#Zkontrolujte, zda je název dne v úterý nebo ve středu nebo v pátek
elif [[ $ den=='Úterý' || $ den=='Středa' || $ den=='Pátek' ]]
pak
vyhodil 'Trénink dál.'$ denv 11:00 hod.
jiný

#Vytiskněte „prázdniny“ na další dny
vyhodil '$ denjsou prázdniny
být
Hotovo

Výstup:

Spusťte skript.

$bashfor.sh

Po spuštění skriptu se zobrazí následující výstup.

Pokud se chcete dozvědět více o smyčce bash for, můžete se podívat na tento tutoriál.

Použití while

Vytvořte soubor bash s následujícím skriptem kde ` zatímco ` smyčka se používá k iteraci. Tento skript vytiskne čísla od 1 do 20, která jsou sudá a dělitelná 5. Zde, $ počítadlo proměnná se používá k řízení iterace smyčky a hodnota této proměnné se v každé iteraci zvýší o 1. Když `kdyby` podmínka vrátí true, pak vytiskne hodnotu $ počítadlo .

#!/bin/bash

#Vytiskněte zprávu
vyhodil 'Vytiskněte čísla, která jsou sudá a dělitelná 5'

#Inicializujte počítadlo
čelit=1

#Opakujte smyčku, dokud hodnota čítače $ nebude menší nebo rovna 20
zatímco [ $ počítadlo -ten dvacet ]
dělat

#Zkontrolujte, zda je počítadlo $ dělitelné 2 a 5
-li [[ $ počítadlo%2-ekv 0 && $ počítadlo%5-ekv 0 ]]
pak
#Vytiskněte čítač $ bez nového řádku
vyhodil '$ počítadlo'
být

#Zvýšení počítadla $ o 1
((čítač ++))
Hotovo
vyhodil 'Hotovo'

Výstup:

$bashwhile.sh

V rozmezí 1–20 jsou pouze čísla, která jsou sudá a dělitelná 5. Následující výstup se objeví po spuštění skriptu.

Pokud chcete vědět více o bash ` zatímco` smyčku pak můžete zkontrolovat tento návod .

Použití až do smyčky

Vytvořte soubor bash s následujícím skriptem kde ` až` smyčka se používá k iteraci. Tento skript vytiskne všechna lichá čísla od 0 do 20. $ n V tomto skriptu je k iteraci smyčky použita proměnná.

do.sh

#!/bin/bash

#Inicializujte proměnnou, n
n=dvacet

#Opakujte smyčku, dokud hodnota $ n není větší než 0
dokud [ $ n -lt 0 ]
dělat

#Zkontrolujte, zda je hodnota n lichá
-li [[ $ n%2-gt 0 ]]
pak
vyhodil $ n
být

#Zvyšte hodnotu n o 1
((n=$ n-1))
Hotovo

Výstup:

Spusťte skript.

$bashdo.sh

Skript vytiskne všechna sudá čísla od 20 do 1. Po spuštění skriptu se zobrazí následující výstup.

Přejít na začátek

Funkce

Když blok kódu potřebuje provést vícekrát ve skriptu, pak se funkce používá k provedení úkolu. Funkci budete muset zavolat podle jména pouze tehdy, když skript definovaný ve funkci bude muset být spuštěn mnohokrát, a nikoli opakovaně přidávat stejný skript. Počáteční a koncová první závorka se používá s názvem funkce k deklaraci funkce v bash skriptu. Funkci lze vyvolat pouhým názvem funkce v bash. Bash nepodporuje argument funkce jako jiný standardní programovací jazyk. Ale hodnotu lze předat funkci bash jiným způsobem, který je uveden v této části. Hodnotu lze z funkce vrátit pomocí příkazu return nebo bez použití příkazu return.

Vytvořte soubor bash s následujícím skriptem, abyste věděli, jak lze funkce deklarovat a volat ve skriptu bash. Ve skriptu jsou deklarovány tři funkce. První funkce je deklarována k tisku jednoduché zprávy, Bash programování pro začátečníky . Druhá funkce je deklarována pro přiřazení řetězcové hodnoty v proměnné, $ return_str který bude tisknout, Naučte se programovat bash s LinuxHint po volání funkce. Třetí funkce je deklarována pro čtení hodnoty argumentu jako poloměr kruhu, který bude poskytnut v době volání funkce. Tady, místní slouží ke čtení hodnoty argumentu. Tato funkce vypočítá plochu kruhu na základě hodnoty poloměru pomocí vzorce, πr2 a vytiskněte vypočítanou hodnotu plochy.

func.sh

#!/bin/bash

#Deklarujte jednoduchou funkci
funkceprint_message()
{
vyhodil 'Bash programování pro začátečníky'
}

#Declare a function to return a string value
funkceret_strdata()
{
#Inicializujte proměnnou hodnotou řetězce
return_str=„Naučte se programovat bash pomocí LinuxHint“
}

#Deklarujte funkci ke čtení hodnoty argumentu
funkcevypočítat_oblast()

#Přečtěte si předanou hodnotu argumentu
místní poloměr=1 $
plocha= $(vyhodil poloměr $*poloměr $*3.14

#Voláním funkce vytisknete jednoduchou zprávu
print_message

#Volejte funkci, která v proměnné přiřadí řetězcovou hodnotu
ret_strdata

#Vytiskněte hodnotu proměnné
vyhodil $ return_str

#Přečtěte si hodnotu poloměru
vyhodil 'Zadejte hodnotu poloměru'
čístpráce

#Volejte funkci s hodnotou poloměru
vypočítat_oblast$ rad

Výstup:

Spusťte skript.

$bashfunc.sh

Po spuštění skriptu se zobrazí následující výstup. První dva řádky se vytisknou voláním funkcí, print_message () a ret_strdata () . Poslední řádek se vytiskne voláním funkce, vypočítat_oblast () s převzatou hodnotou vstupního poloměru.

Pokud chcete vědět o vrácení řetězce z funkce bash, můžete tuto tutorii .

Přejít na začátek

Volání programů ve skriptu

K volání jiných programů v jakémkoli skriptu bash můžete použít mnoho typů příkazů, například zdroj, bash, eval, vykon atd. Předpokládejme tři bash soubory, add.sh , subtract.sh, multiply.sh a division.sh vytvořené k provádění sčítání, odčítání, násobení a dělení. Tady, odečíst.sh a divize.sh přečíst argumenty příkazového řádku. Skript všech těchto čtyř souborů je uveden níže.

add.sh

#!/bin/bash
na=60
b=40
((výsledek=$ a+$ b))
vyhodil `` Přidání$ a+$ b=$ výsledek'

subract.sh

#!/bin/bash
na=1 $
b=2 $
((výsledek=$ a-$ b))
vyhodil 'Odečtení.'$ a-$ b=$ výsledek'

znásobit.sh

#!/bin/bash
((výsledek=1 $*2 $))
vyhodil „Násobení $ 1 a $ 2 je$ výsledek'

rozdělit.sh

#!/bin/bash
na=1 $
b=2
((výsledek=$ a/$ b))
vyhodil 'Rozdělení.'$ apodle$ bje$ výsledek'

Vytvořte bash soubor s názvem, callpro.sh pomocí následujícího skriptu zavoláme zmíněné soubory bash pomocí příkazů source, bash, eval a exec. Před spuštěním následujícího skriptu musíte nastavit oprávnění ke spuštění pro výše uvedené čtyři soubory. K volání se používá příkaz `source` add.sh soubor. Příkaz `bash` se používá ke spuštění souboru subtract.sh. Příkaz `eval` se používá ke spuštění souboru multiply.sh. Jako argumenty příkazového řádku pro příkaz `eval` jsou odeslány dvě vstupní hodnoty. Poslední příkaz je příkaz exec, který pracuje pouze s absolutní cestou. K tomu je ve skriptu uveden úplný název cesty souboru 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 padesátka dvacet

vyhodil 'Zadejte hodnotu'
čístna
vyhodil 'Zadejte hodnotu b'
čístb
eval bash $ script3 $ a $ b
vykon $ script4 30

Výstup:

Spusťte skript.

$bashcallpro.sh

Po spuštění skriptu se zobrazí následující výstup.

Přejít na začátek

Vytváření nabídek

V bashu existuje užitečný příkaz k vytvoření jednoduché nabídky, která se nazývá `vybrat` příkaz. Pomocí tohoto příkazu lze vytvořit různé typy nabídek. K vytvoření nabídky pomocí tohoto příkazu slouží konkrétní seznam dat. Vytvořte soubor bash s následujícím kódem, abyste viděli použití `vybrat` příkaz pro vytvoření nabídky. V tomto případě bude seznam pěti položek vytištěn jako nabídka a vyzve uživatele, aby si ze seznamu vybral libovolný jazyk. Vybraná hodnota bude uložena v proměnné, $ jazyk který se vytiskne později zřetězením s jiným řetězcem. Skript bude průběžně požadovat výběr jazyka, dokud uživatel nestiskne 6 ukončit ze skriptu.

menu.sh

#!/bin/bash

#Tisková zpráva pro uživatele
vyhodil „Vyberte si svůj oblíbený jazyk“

# Definujte seznam položky nabídky
vybratJazykvC# Java PHP Python Bash Exit
dělat
#Vytiskněte vybranou hodnotu
-li [[ $ jazyk=='Výstup' ]]
pak
výstup 0
jiný
vyhodil „Vybraný jazyk je$ jazyk'
být
Hotovo

Výstup:

Spusťte skript.

$bashmenu.sh

Podle následujícího výstupu uživatel stiskl poprvé 3, který vytiskl PHP, a podruhé stiskl 6, které skončilo ze skriptu.

Pokud se chcete dozvědět více o vytváření bash menu pomocí `select`, pak můžete navštívit tento tutoriál.

Přejít na začátek

Zpracování příkazového řádku

Někdy potřebujeme zadat vstupní hodnoty při provádění skriptu z příkazového řádku. Tento úkol lze v bash provést dvěma způsoby. Jedním ze způsobů je použití proměnných argumentů a druhým způsobem je použití funkce getopts. V této části je zobrazeno čtení vstupních dat příkazového řádku z terminálu pomocí proměnné argumentu.

Vytvořte soubor bash pomocí následujícího skriptu, abyste viděli použití čtení hodnoty argumentu příkazového řádku. Tento skript přečte tři argumenty příkazového řádku, které budou uloženy v proměnných, $ operand1, $ operand2 a $ operator. Aby byl skript správně spuštěn, musí být první a třetí hodnota argumentu číslo a hodnota druhého argumentu musí být kterýkoli ze čtyř aritmetických operátorů („+“, „-“, „/“, „x“). -li příkaz zkontroluje hodnotu operátoru $ a provede operaci na základě operátoru a hodnotu vytiskne.

cl1.sh

#!/bin/bash

#Vytiskněte proměnné argumentů
vyhodil „Hodnoty argumentů jsou: $ 1 $ 2 $ 3“

# Uložte hodnoty argumentů
operand 1=1 $
operand 2=3 $
operátor=2 $

#Chcete -li provést aritmetickou operaci, zkontrolujte hodnotu argumentu 2. příkazu
-li [[ $ operátor=='+' ]]
pak
((výsledek=$ operand1+$ operand2))
elif [[ $ operátor=='-' ]]
pak
((výsledek=$ operand1-$ operand2))
elif [[ $ operátor=='X' ]]
pak
((výsledek=$ operand1*$ operand2))
elif [[ $ operátor=='/' ]]
pak

((výsledek=$ operand1/$ operand2))
být

# vytiskněte výsledek
vyhodil -A 'Výsledek je =$ výsledek'

Výstup:

Spusťte skript.

$bashcl1.sh

Skript je proveden čtyřikrát pro čtyři typy aritmetických operátorů. Pro hodnoty argumentů se zobrazí následující výstup, 6 + 3, 6 - 3, 6 x 3 a 6/3 .

Hodnoty argumentů lze předávat pomocí dvojice název-hodnota v bash. Vytvořte soubor bash s následujícím skriptem, který vám ukáže, jak číst hodnoty argumentů s názvem. Skript přečte dvě proměnné argumentu. Hodnoty argumentů s názvem jsou vytištěny v prvním příkazu skriptu. Dále se smyčka for používá k iteraci pole, které obsahuje hodnoty argumentů příkazového řádku. Každý prvek pole je rozdělen do páru klíč-hodnota pomocí příkazu `cut`. Dále se pro tisk konkrétní zprávy na základě hodnoty klíče použije příkaz case.

cl2.sh

. #! /dopoledne/bash

#Vytiskněte proměnné argumentů
vyhodil „Hodnoty argumentů jsou: $ 1 $ 2“

#Přečtěte si každý argument samostatně pomocí cyklu for
prorozzlobenýv '[email protected]'
dělat

#Samostatný název a hodnota argumentu
klíč= $(vyhodil $ arg | střih -f1 -d=)
hodnota= $(vyhodil $ arg | střih -f2 -d=)

#Vytiskněte zprávu podle názvu argumentu
případ $ klíč v
název) vyhodil „Jméno studenta =$ hodnota';;
označit) vyhodil 'Získaná známka =$ hodnota' ;;
*)
esac
Hotovo

Výstup:

Spusťte skript s následujícími argumenty příkazového řádku.

$bashcl2.shnázev= Abir Hossainoznačit=90

Výše uvedené příkazy obsahují dva argumenty příkazového řádku. Tyto jsou jméno = Abir Hossain a značka = 90 . název a značky jsou odděleny skriptem a po formátování výstupu jsou vytištěny dvě hodnoty.

Zpracování argumentů příkazového řádku pomocí getopts funkce není v tomto kurzu diskutována. Pokud chcete vědět o zpracování příkazového řádku pomocí getopts funkci pak můžete navštívit tento návod .

Přejít na začátek

Aritmetický

Provádění aritmetických operací je běžným požadavkem jakéhokoli programovacího jazyka. Bash provádí aritmetickou operaci jiným způsobem než jiný standardní programovací jazyk. Existuje několik způsobů, jak provádět aritmetické operace v bash. V této části je zobrazen jeden z jednoduchých způsobů provedení aritmetické operace. Vytvořte soubor bash s následujícím skriptem. Tento skript zobrazuje čtyři typy aritmetických operací. Jednoduché operace sčítání a dělení jsou zobrazeny pomocí dvojitých prvních závorek na začátku skriptu. Dále se zobrazí operace před přírůstkem. V poslední části skriptu je nakonec ukázán způsob použití zkráceného operátoru.

arith.sh

#!/bin/bash
# Vypočítejte součet
výsledek= $((padesátka+25))
# Vytiskněte hodnotu součtu
vyhodil 'součet =$ výsledek'

# Vypočítejte rozdělení
výsledek= $((padesátka/25))
# Vytiskněte hodnotu rozdělení
vyhodil 'rozdělení =$ výsledek'

# Přiřaďte hodnotu N.
N.=10
# Provádění předběžného přírůstku
((--N))
# Vytiskněte hodnotu N.
vyhodil 'Hodnota po snížení =$ N'

# Používání zkráceného operátoru
((N +=10 ))
# Vytiskněte hodnotu N.
vyhodil 'Hodnota po přidání 10 =$ N'

Výstup:

Spusťte skript.

$basharith.sh

Po spuštění skriptu se zobrazí následující výstup.

Všechny aritmetické operace se provádějí pomocí dvojitých závorek v tomto výše uvedeném skriptu. Můžete ale použít „ nechat “,„ expr ' a ' před naším letopočtem ‘Příkaz provést aritmetickou operaci v bash. Pokud se chcete dozvědět více o těchto příkazech pro provádění bash aritmetických operací, můžete navštívit tento tutoriál.

Přejít na začátek

Manipulace s řetězci

V řetězci bash lze s řetězcovými daty provádět mnoho typů úkolů. Některé zřetězují řetězec, porovnávají řetězec, rozdělují řetězec, mění se velikost řetězce atd. Neexistují žádné vestavěné funkce řetězců jako jiné standardní jazyky v bash, které by prováděly operace s řetězci. V této části tohoto kurzu jsou popsány některé běžné manipulace s řetězci.

Zřetězení řetězce

Sčítání dvou nebo více řetězců dohromady se nazývá zřetězení řetězců. Řetězec je spojen dohromady v bash umístěním jeden po druhém. Vytvořte soubor bash s následujícím skriptem, který ukáže použití zřetězení řetězců. Dvě řetězcové proměnné se inicializují a vytisknou po zkombinování proměnných. Zde je obsah $ řetězec1 a $ string2 budou sloučeny a vytištěny.

concat.sh

#!/bin/bash

#Inicializujte proměnnou prvního řetězce
řetězec 1='Mám rád '
#Inicializujte proměnnou druhého řetězce
řetězec2='Bash Programming'
#Vytiskněte po kombinaci obou řetězců
vyhodil '$ řetězec1$ string2'

Výstup:

Spusťte skript.

$bashconcat.sh

Po spuštění skriptu se zobrazí následující výstup.

Více o zřetězení řetězců můžete vědět z tohoto kurzu.

Přejít na začátek

Porovnání řetězce

Bash používá k porovnávání řetězcových dat různé typy operátorů. Pomocí následujícího skriptu vytvořte soubor bash, který vám ukáže, jak porovnat data dvou řetězců. Hodnota řetězce je brána jako vstup ve skriptu, který je porovnáván s jiným řetězcem. Pokud se hodnota shoduje, pak zpráva, Máte rádi Python budou vytištěny jinak Máte rádi PERL budou vytištěny.

porovnat. sh

#!/bin/bash
vyhodilZadejte libovolnou hodnotu řetězce
čísttext

#Zkontrolujte, zda jsou vstupní data ekvivalentní Pythonu
-li [ $ text=='Krajta' ];pak
vyhodil 'Máš rád Python.'
jiný
vyhodil „Máš rád PERL“
být

Výstup:

Spusťte skript.

$bashporovnat. sh

Následující výstup se objeví po spuštění skriptu, kde je vstupní hodnota „PERL“.

Více o porovnávání řetězců můžete vědět z tento návod .

Štípací řetězec

Bash nemá žádnou vestavěnou funkci rozdělení k rozdělení řetězcových dat. Řetězcová data mohou být v bash rozdělena několika způsoby na základě různých typů oddělovačů. Pomocí následujícího skriptu vytvořte soubor bash, který ukáže, jak lze řetězcová data rozdělit na bash. Jako vstup je brána hodnota řetězce. Tento skript rozdělí hodnotu $ text na základě prostoru. Tady, IFS proměnná slouží k nastavení oddělovače. 'číst' Zde se používá příkaz k rozdělení textové hodnoty a uložení hodnot do pole. pro smyčka se používá k iteraci pole a tisku hodnoty každého prvku.

rozdělit.sh

#!/bin/bash
#Vložte hodnotu řetězce
vyhodilZadejte hodnotu řetězce
čísttext
# Nastavte oddělovač
IFS=''
#Rozdělte hodnotu $ textu do pole na základě oddělovače mezer
číst -naarr<<< '$ text'
# Vytiskněte každou hodnotu pole
prohodnotav '$ {arr [@]}';
dělat
printf '$ hodnota n'
Hotovo

Výstup:

Spusťte skript.

$bashrozdělit.sh

Následující výstup se objeví po převzetí vstupu, Naučte se programovat Bash . Tato vstupní hodnota je text o třech slovech. Řetězec je tedy rozdělen na tři části.

Více o porovnávání řetězců můžete vědět z tento návod .

Změna velikosti řetězce

Většina skriptovacích jazyků má vestavěné funkce pro změnu velikosti řetězcových dat. Ale případ řetězcových dat lze v bash změnit pomocí `tr ' příkazu nebo pomocí ':horní' a ':dolní' klíčová slova. Vytvořte soubor bash s následujícím skriptem, který zná způsoby, jak změnit velikost písmen v bashu. Zde jsou data prvního řetězce převedena na velká písmena pomocí '^^' symbol a druhý řetězec je převeden na malá písmena pomocí `tr ' příkaz. `tr ' příkaz prohledá všechna velká písmena v řetězci a převede znaky na malá písmena.

case.sh

#!/bin/bash

#Inicializujte data prvního řetězce
text 1='[email protected]'

#Vytiskněte hodnotu $ text1 převedením všech znaků na velká písmena
vyhodil $ {email ^^}

#Inicializujte data druhého řetězce
text2= „Základy programování v Bash“

#Vytiskněte hodnotu $ text2 převedením všech velkých písmen na malá
vyhodil $ text2 | NS [:horní:] [:dolní:]

Výstup:

Spusťte skript.

$bashcase.sh

Po spuštění skriptu se zobrazí následující výstup.

Více o porovnávání řetězců můžete vědět z tento návod .

Přejít na začátek

Čtení dat řetězce smyčkou

Řetězcová data fungují jako pole znaků pro jakýkoli programovací jazyk. Jak ' pro V této části je zobrazena smyčka ‘ke čtení řetězcových dat v bashu. Pomocí následujícího skriptu vytvořte základní soubor pro čtení každé části hodnoty řetězce pomocí cyklu for.

readstr.sh

#!/bin/bas
# Přečtěte každé slovo textu pomocí smyčky for
prohodnotavBash programováníprozačátečníci
dělat
vyhodil $ hodnota
Hotovo

Výstup:

Spusťte skript.

$bashreadstr.sh

Po spuštění skriptu se zobrazí následující výstup.

Můžete se dozvědět více o iteraci řetězcových dat pomocí smyčky od tento návod .

Přejít na začátek

Vrácení návratových kódů ze skriptu a zachycení v jiném skriptu

Jeden skript bash může zachytit návratové kódy z jiného skriptu voláním skriptu a použitím '$?' přečíst návratovou hodnotu. Předpokládejme, že bash soubor s názvem první.sh vrací kód po provedení. Vytvořte další bash soubor s názvem druhý.sh a přidejte následující skript, který zachytí návratovou hodnotu a provede další úkoly. Kód obou souborů je uveden níže. první.sh soubor bude volán z druhý.sh soubor na začátku skriptu. první.sh vrátí výstupní kód na základě vstupní hodnoty. second.sh zachytí kód '$?' a porovnejte s 1. Pokud jsou obě hodnoty stejné, vytiskne se, Vstupní číslo je větší než 100 , jinak se vytiskne, Vstupní číslo je menší nebo rovné 100 .

první.sh

#!/bin/bash

vyhodil „Zadejte číselnou hodnotu“
čístn

# Zkontrolujte, zda je vstupní hodnota menší nebo rovna 100 nebo ne
-li [[ $ n -ten 100 ]]
pak
výstup 0
jiný
výstup 1
být

druhý.sh

#! /bin/bash

#Spustit soubor, first.sh
bash 'first.sh'

#Zkontrolujte, zda je návratový kód roven 1 nebo ne
-li [ $? -ekv 1 ]
pak
vyhodil „Vstupní číslo je větší než 100“
jiný
vyhodil 'Vstupní číslo je menší nebo rovné 100'
být

Výstup:

Spusťte skript.

$bashdruhý.sh

Následující výstup se zobrazí, když je skript spuštěn 55 a 110 dvakrát.

Přejít na začátek

Čtení a zápis do souborů

Soubory pro čtení a zápis jsou běžnými požadavky programování bash. Bash nemá žádnou vestavěnou funkci jako jiný jazyk pro čtení nebo zápis souboru. Existuje několik způsobů, jak číst soubor v bash. Nejběžnějším způsobem čtení nebo zápisu souboru v bash je použití `kočka ' příkaz. Tento příkaz se však používá ke čtení celého obsahu souboru najednou. Můžete také číst libovolný soubor řádek po řádku pomocí libovolné smyčky a 'číst' příkaz. Pomocí operátoru přesměrování '>' , do bash můžete zapisovat data do libovolného souboru. Pokud chcete připojit data do libovolného souboru, musíte použít '>>' operátor. Operace se soubory čtení i zápisu jsou uvedeny v další části této části.

Čtení souboru v bash

Vytvořte soubor bash s následujícím skriptem a přečtěte si existující soubor s názvem „ hardware.txt “. Obsah tohoto souboru je uveden níže. Ve skriptu je přečten celý obsah souboru `kočka ' příkaz první a další, zatímco smyčka se používá ke čtení souboru řádek po řádku.

hardware.txt

Monitor
Klávesnice
Myš
Skener
Tiskárna

readfile.sh

#!/bin/bash

vyhodil 'Čtení souboru pomocí příkazu kočka'

# Přečtěte si obsah souboru pomocí příkazu `cat`
obsah=``kočkahardware.txt``
vyhodil $ obsah

vyhodil 'Čtení souboru řádek po řádku pomocí smyčky'

# Přiřaďte název souboru
název souboru='hardware.txt'

# Každý řádek souboru bude přečten každou iterací smyčky
zatímco čístčára;
dělat
# vytiskněte řádek
vyhodil $ řádek
Hotovo<$ název_souboru

Výstup:

Spusťte následující příkazy.

$kočkahardware.txt
$bashreadfile.sh

Zde první příkaz vytiskne obsah souboru, hardware.txt bez spuštění skriptu bash a druhý příkaz spustí skript readfile.sh a vytiskněte obsah souboru dvakrát pomocí `kočka ' velení a 'číst' příkaz se smyčkou while. Toto můžete navštívit tutorial abyste věděli více o čtení souboru po řádcích.

Zápis souboru do bash

Pomocí následujícího skriptu vytvořte soubor bash, který zapíše nový obsah do nového souboru a připojí v něm data.

writefile.sh

#!/bin/bash

vyhodil 'Zadejte nějaký text'
#Přečíst data řetězce
číststr1
#Přidejte vstupní data do souboru poprvé
vyhodil $ str1 >test.txt

vyhodil „Zadejte nějaký jiný text“
#Přečtěte si další data řetězce
číststr2
#Přidejte vstupní data na konec souboru
vyhodil $ str2 >>test.txt

#Zobrazit celý obsah souboru
vyhodil ``kočkatest.txt``

Výstup:

Spusťte skript.

$bashwritefile.sh

Po spuštění skriptu se zobrazí následující výstup.

Přejít na začátek

Potrubí

Pipe se používá k přesměrování jakéhokoli výstupu příkazu na jiný vstup příkazu. Lze jej použít mezi různými typy příkazů bash ke generování konkrétního výstupu. Standardní vstup je spojen se standardním výstupem v Linuxu po potrubí. Chcete -li získat požadovaný výstup, musíte nastavit příkaz v pořadí se symbolem potrubí (|). Dva nebo více příkazů lze provést společně v jednom příkazu pomocí kanálu. Chcete -li provést stejný úkol, musíte provést více příkazů na více řádcích bez kanálu. Použití potrubí je tedy velmi výhodné pro provádění mnoha typů úkolů v krátké formě.

syntax:

příkaz 1|příkaz 2|...

Zde bude výstup příkazu1 předán jako vstup příkazu2.

Stejný typ úkolu se provádí s potrubím a bez potrubí v další části této části. Předpokládejme textový soubor s názvem marks.txt je uveden s následujícími údaji.

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 roztřídit data v souboru a zjistit a vytisknout všechny záznamy o jménu studenta „K to jo ' . Tento úkol můžete provést spuštěním více příkazů bez použití kanálu, který je zobrazen v další části. K získání požadovaného výstupu je třeba spustit následující příkazy. První příkaz soubor seřadí. Druhý příkaz vyhledá položku „K to jo ' pomocí ` rukojeť `příkaz a uložte výstup do soubor temp.txt soubor. Třetí příkaz spočítá celkové řádky a temp.txt soubor pomocí `wc` příkaz.

$tříditmarks.txt
$rukojeť 'Keya'marks.txt>temp.txt
$toaleta -tentemp.txt

Výstup:

V souboru jsou dva záznamy studenta „Keya“. Po spuštění výše uvedených příkazů se tedy zobrazí následující výstup.

Výše uvedené tři příkazy můžete snadno sloučit a získat stejný výstup spuštěním jediného příkazu s kanálem, který je uveden v následujícím příkazu. K získání výstupu zde není vyžadován žádný dočasný soubor. Zde je výstup souboru ` třídit Příkaz `bude předán jako vstup` rukojeť `příkaz a výstup příkazu` rukojeť `Příkaz bude předán jako vstup pro `wc` příkaz.

$tříditmarks.txt| rukojeť 'Keya' | toaleta -ten

Výstup:

Po spuštění výše uvedeného příkazu získáte následující výstup jako výstup předchozího příkazu. Výstup příkazu bude 2.

Přejít na začátek

Závěr:

V tomto kurzu se pokusíme pokrýt nejužitečnější a nejnutnější témata skriptovacího jazyka bash. Doufám, že čtenář bude mít po přečtení tohoto tutoriálu prospěch a bude schopen psát bash skript efektivněji.