logo

Příklady skriptů Shell

Pro všechny linuxové distribuce je shell skript jako mávnutím kouzelného proutku, který automatizuje proces, šetří uživatelům čas a zvyšuje produktivitu. Tento výukový program skriptování vás seznámí s více než 25 příklady skriptování.

Než ale přejdeme k tématu shell skriptování příklady, pojďme pochopit skript shellu a skutečné případy použití skriptování shell.



Co je Shell Script?

No, skořápka je a CLI ( interpret příkazového řádku ), který běží v textovém okně, kde mohou uživatelé spravovat a spouštět příkazy shellu. Na druhou stranu, proces psaní sady příkazů, které mají být provedeny v systému Linux. Soubor, který takové instrukce obsahuje, se nazývá bash skript.

Použití skriptů Shell

Níže jsou uvedena některá běžná použití skriptu Shell:

  • Automatizace úloh – Lze jej použít k automatizaci opakujících se úloh, jako jsou pravidelné zálohování a úlohy instalace softwaru.
  • Přizpůsobení – K návrhu prostředí příkazového řádku lze použít skripty shellu a snadno provádět jeho úkoly podle potřeb.
  • Správa souborů – Skripty shellu lze také použít ke správě a manipulaci se soubory a adresáři, jako je přesouvání, kopírování, přejmenování nebo mazání souborů.

Příklady skriptů Shell v Linuxu

1) Co znamená znak shebang (#!) na začátku skriptu shellu?

The shebang (#!) na začátku skriptu označuje interpret, který by měl být použit ke spuštění skriptu. Říká systému, který shell nebo interpret by měl interpretovat příkazy skriptu.



Například: Předpokládejme, že máme pojmenovaný skript myscript.sh napsané v shellu Bash:

kreslení obdélníku gimp
Shebang

Shebang

V tomto příkladu:



  • #!/bin/bash na začátku skriptu označuje, že skript by měl být interpretován pomocí prostředí Bash.
  • Příkazy echo se používají k tisku zpráv na terminál.

2) Jak spustíte skript shellu z příkazového řádku?

Chcete-li spustit skript shellu z příkazového řádku, musíme provést následující kroky:

  • Ujistěte se, že soubor skriptu má spustitelná oprávnění pomocí příkaz chmod :
chmod +x myscript.sh>
  • Spusťte skript pomocí jeho názvu souboru:
./myscript.sh>

Zde musíte vyměnit myscript.sh s vaším názvem skriptu.

3) Napište shellový skript, který vytiskne techcodeview.com do terminálu.

Vytvořte název skriptu `myscript.sh` (používáme ` protože ` editor, můžete si vybrat libovolný editor)

vim myscript.sh>

#!/bin/bash
# Tento skript vytiskne techcodeview.com do terminálu
echo techcodeview.com

tisknout jméno

tisknout jméno

Náš skript uděláme spustitelným pomocí `chmod +x`, poté provedeme pomocí `./myscipt.sh` a získáme požadovaný výstup techcodeview.com.

4) Vysvětlete účel příkazu echo ve skriptování shellu.

The příkaz echo slouží k zobrazení textu nebo proměnných na terminálu. Běžně se používá pro tisk zpráv, hodnot proměnných a generování výstupu programu.

434

příkaz echo

V tomto příkladu jsme spustili `echo` na terminálu přímo, protože to funguje stejně uvnitř skriptu shellu.

5) Jak můžete přiřadit hodnotu proměnné v shell skriptu?

Proměnným se přiřazují hodnoty pomocí operátoru přiřazení =.

Například:

#!/bin/bash
# Přiřazení hodnoty proměnné
jméno=Jayesh
věk=21
echo $jméno $věk

Vysvětlení:

  • Název proměnné má přiřazenou hodnotu Jayesh.
  • Proměnná věk má přiřazenu hodnotu 21.
  • echo se používá k tisku a `$jméno` `$věk` se používá k volání hodnoty uložené v proměnných.

435

6) Napište skript shellu, který vezme jméno uživatele jako vstup a pozdraví ho.

Vytvořte název skriptu `example.sh`.

#!/bin/bash
# Zeptejte se uživatele na jeho jméno
echo Jak se jmenuješ?
číst jméno
# Pozdravte uživatele
echo Ahoj, $name! Rád vás poznávám.

Vysvětlení:

  • #!/bin/bash: Toto je linie shebang. Říká systému, aby ke spuštění skriptu použil interpret Bash.
  • # Zeptejte se uživatele na jeho jméno: Toto je komentář. Poskytuje kontext o nadcházejícím kódu. Komentáře jsou interpretem ignorovány.
  • echo What’s your name?: Příkaz echo se používá k zobrazení textu ve dvojitých uvozovkách na terminálu.
  • read name: Příkaz read čeká, až uživatel vloží text, a uloží jej do názvu proměnné.
  • echo Ahoj, $name! Rád vás poznávám.: Tento řádek používá příkaz echo k vytištění uvítací zprávy, která obsahuje hodnotu proměnné name, která byla shromážděna ze vstupu uživatele.

436

7) Jak přidáváte komentáře do skriptu shellu?

Komentáře ve skriptování shellu se používají k poskytnutí vysvětlení nebo kontextu kódu. Tlumočník je ignoruje a jsou určeny pouze pro lidi čtoucí scénář. Komentáře můžete přidávat pomocí symbolu #.

#!/bin/bash
# Toto je komentář vysvětlující účel skriptu
echo gfg

8) Vytvořte shellový skript, který zkontroluje, zda soubor v aktuálním adresáři existuje.

Zde je skript, který zkontroluje, zda v aktuálním adresáři existuje soubor s názvem example.txt:

#!/bin/bash
soubor=example.txt
# Zkontrolujte, zda soubor existuje
if [ -e $soubor ]; pak
echo Soubor existuje: $soubor
jiný
echo Soubor nenalezen: $file
být

Vysvětlení:

  1. #!/bin/bash: Toto je řádek shebang, který určuje interpret (/bin/bash), který má být použit pro spuštění skriptu.
  2. file=example.txt: Tento řádek definuje soubor proměnné a přiřadí jí hodnotu example.txt. Toto můžete nahradit názvem souboru, který chcete zkontrolovat.
  3. if [ -e $soubor ]; then: Tento řádek začíná příkazem if. Podmínka [ -e $soubor ] zkontroluje, zda soubor určený hodnotou proměnné soubor existuje. Parametr -e se používá ke kontrole existence souboru.
  4. echo Soubor existuje: $soubor: Pokud je podmínka pravdivá (tj. soubor existuje), na tomto řádku se vytiskne zpráva, že soubor existuje, spolu s názvem souboru.
  5. else: Pokud je podmínka nepravdivá (tj. soubor neexistuje), skript spustí kód ve větvi else.
  6. echo Soubor nenalezen: $soubor: Tento řádek vytiskne chybovou zprávu indikující, že zadaný soubor nebyl nalezen, spolu s názvem souboru.
  7. fi: Tento řádek označuje konec příkazu if.
Hledání souboru

Hledání souboru

9) Jaký je rozdíl mezi jednoduchými uvozovkami (‘) a dvojitými uvozovkami () ve skriptování shellu?

Jednoduché uvozovky (‘) a dvojité uvozovky () se používají k uzavření řetězců ve skriptování shellu, ale mají odlišné chování:

  • Jednoduché uvozovky: Vše mezi jednoduchými uvozovkami je považováno za doslovný řetězec. Názvy proměnných a většina speciálních znaků nejsou rozšířeny.
  • Dvojité uvozovky: Proměnné a určité speciální znaky v uvozovkách jsou rozšířeny. Obsah podléhá variabilní substituci a substituci příkazů.

#!/bin/bash

abcd=Ahoj
echo ‘$abcd’ # Výstup: $abcd
echo $abcd # Výstup: Dobrý den

10) Jak můžete použít argumenty příkazového řádku ve skriptu shellu?

Argumenty příkazového řádku jsou hodnoty poskytnuté skriptu při jeho spuštění. Lze k nim přistupovat ve skriptu pomocí speciálních proměnných jako , atd., kde představuje první argument, představuje druhý argument atd.

Například: Pokud je název našeho skriptu v `example.sh`

#!/bin/bash

echo Název skriptu:

Pro všechny linuxové distribuce je shell skript jako mávnutím kouzelného proutku, který automatizuje proces, šetří uživatelům čas a zvyšuje produktivitu. Tento výukový program skriptování vás seznámí s více než 25 příklady skriptování.

Než ale přejdeme k tématu shell skriptování příklady, pojďme pochopit skript shellu a skutečné případy použití skriptování shell.

Co je Shell Script?

No, skořápka je a CLI ( interpret příkazového řádku ), který běží v textovém okně, kde mohou uživatelé spravovat a spouštět příkazy shellu. Na druhou stranu, proces psaní sady příkazů, které mají být provedeny v systému Linux. Soubor, který takové instrukce obsahuje, se nazývá bash skript.

Použití skriptů Shell

Níže jsou uvedena některá běžná použití skriptu Shell:

  • Automatizace úloh – Lze jej použít k automatizaci opakujících se úloh, jako jsou pravidelné zálohování a úlohy instalace softwaru.
  • Přizpůsobení – K návrhu prostředí příkazového řádku lze použít skripty shellu a snadno provádět jeho úkoly podle potřeb.
  • Správa souborů – Skripty shellu lze také použít ke správě a manipulaci se soubory a adresáři, jako je přesouvání, kopírování, přejmenování nebo mazání souborů.

Příklady skriptů Shell v Linuxu

1) Co znamená znak shebang (#!) na začátku skriptu shellu?

The shebang (#!) na začátku skriptu označuje interpret, který by měl být použit ke spuštění skriptu. Říká systému, který shell nebo interpret by měl interpretovat příkazy skriptu.

Například: Předpokládejme, že máme pojmenovaný skript myscript.sh napsané v shellu Bash:

Shebang

Shebang

V tomto příkladu:

  • #!/bin/bash na začátku skriptu označuje, že skript by měl být interpretován pomocí prostředí Bash.
  • Příkazy echo se používají k tisku zpráv na terminál.

2) Jak spustíte skript shellu z příkazového řádku?

Chcete-li spustit skript shellu z příkazového řádku, musíme provést následující kroky:

  • Ujistěte se, že soubor skriptu má spustitelná oprávnění pomocí příkaz chmod :
chmod +x myscript.sh>
  • Spusťte skript pomocí jeho názvu souboru:
./myscript.sh>

Zde musíte vyměnit myscript.sh s vaším názvem skriptu.

3) Napište shellový skript, který vytiskne techcodeview.com do terminálu.

Vytvořte název skriptu `myscript.sh` (používáme ` protože ` editor, můžete si vybrat libovolný editor)

vim myscript.sh>

#!/bin/bash
# Tento skript vytiskne techcodeview.com do terminálu
echo techcodeview.com

tisknout jméno

tisknout jméno

Náš skript uděláme spustitelným pomocí `chmod +x`, poté provedeme pomocí `./myscipt.sh` a získáme požadovaný výstup techcodeview.com.

4) Vysvětlete účel příkazu echo ve skriptování shellu.

The příkaz echo slouží k zobrazení textu nebo proměnných na terminálu. Běžně se používá pro tisk zpráv, hodnot proměnných a generování výstupu programu.

434

příkaz echo

V tomto příkladu jsme spustili `echo` na terminálu přímo, protože to funguje stejně uvnitř skriptu shellu.

5) Jak můžete přiřadit hodnotu proměnné v shell skriptu?

Proměnným se přiřazují hodnoty pomocí operátoru přiřazení =.

Například:

#!/bin/bash
# Přiřazení hodnoty proměnné
jméno=Jayesh
věk=21
echo $jméno $věk

Vysvětlení:

  • Název proměnné má přiřazenou hodnotu Jayesh.
  • Proměnná věk má přiřazenu hodnotu 21.
  • echo se používá k tisku a `$jméno` `$věk` se používá k volání hodnoty uložené v proměnných.

435

6) Napište skript shellu, který vezme jméno uživatele jako vstup a pozdraví ho.

Vytvořte název skriptu `example.sh`.

#!/bin/bash
# Zeptejte se uživatele na jeho jméno
echo Jak se jmenuješ?
číst jméno
# Pozdravte uživatele
echo Ahoj, $name! Rád vás poznávám.

Vysvětlení:

  • #!/bin/bash: Toto je linie shebang. Říká systému, aby ke spuštění skriptu použil interpret Bash.
  • # Zeptejte se uživatele na jeho jméno: Toto je komentář. Poskytuje kontext o nadcházejícím kódu. Komentáře jsou interpretem ignorovány.
  • echo What’s your name?: Příkaz echo se používá k zobrazení textu ve dvojitých uvozovkách na terminálu.
  • read name: Příkaz read čeká, až uživatel vloží text, a uloží jej do názvu proměnné.
  • echo Ahoj, $name! Rád vás poznávám.: Tento řádek používá příkaz echo k vytištění uvítací zprávy, která obsahuje hodnotu proměnné name, která byla shromážděna ze vstupu uživatele.

436

7) Jak přidáváte komentáře do skriptu shellu?

Komentáře ve skriptování shellu se používají k poskytnutí vysvětlení nebo kontextu kódu. Tlumočník je ignoruje a jsou určeny pouze pro lidi čtoucí scénář. Komentáře můžete přidávat pomocí symbolu #.

#!/bin/bash
# Toto je komentář vysvětlující účel skriptu
echo gfg

8) Vytvořte shellový skript, který zkontroluje, zda soubor v aktuálním adresáři existuje.

Zde je skript, který zkontroluje, zda v aktuálním adresáři existuje soubor s názvem example.txt:

#!/bin/bash
soubor=example.txt
# Zkontrolujte, zda soubor existuje
if [ -e $soubor ]; pak
echo Soubor existuje: $soubor
jiný
echo Soubor nenalezen: $file
být

Vysvětlení:

  1. #!/bin/bash: Toto je řádek shebang, který určuje interpret (/bin/bash), který má být použit pro spuštění skriptu.
  2. file=example.txt: Tento řádek definuje soubor proměnné a přiřadí jí hodnotu example.txt. Toto můžete nahradit názvem souboru, který chcete zkontrolovat.
  3. if [ -e $soubor ]; then: Tento řádek začíná příkazem if. Podmínka [ -e $soubor ] zkontroluje, zda soubor určený hodnotou proměnné soubor existuje. Parametr -e se používá ke kontrole existence souboru.
  4. echo Soubor existuje: $soubor: Pokud je podmínka pravdivá (tj. soubor existuje), na tomto řádku se vytiskne zpráva, že soubor existuje, spolu s názvem souboru.
  5. else: Pokud je podmínka nepravdivá (tj. soubor neexistuje), skript spustí kód ve větvi else.
  6. echo Soubor nenalezen: $soubor: Tento řádek vytiskne chybovou zprávu indikující, že zadaný soubor nebyl nalezen, spolu s názvem souboru.
  7. fi: Tento řádek označuje konec příkazu if.
Hledání souboru

Hledání souboru

9) Jaký je rozdíl mezi jednoduchými uvozovkami (‘) a dvojitými uvozovkami () ve skriptování shellu?

Jednoduché uvozovky (‘) a dvojité uvozovky () se používají k uzavření řetězců ve skriptování shellu, ale mají odlišné chování:

  • Jednoduché uvozovky: Vše mezi jednoduchými uvozovkami je považováno za doslovný řetězec. Názvy proměnných a většina speciálních znaků nejsou rozšířeny.
  • Dvojité uvozovky: Proměnné a určité speciální znaky v uvozovkách jsou rozšířeny. Obsah podléhá variabilní substituci a substituci příkazů.

#!/bin/bash

abcd=Ahoj
echo ‘$abcd’ # Výstup: $abcd
echo $abcd # Výstup: Dobrý den

10) Jak můžete použít argumenty příkazového řádku ve skriptu shellu?

Argumenty příkazového řádku jsou hodnoty poskytnuté skriptu při jeho spuštění. Lze k nim přistupovat ve skriptu pomocí speciálních proměnných jako $1, $2 atd., kde $1 představuje první argument, $2 představuje druhý argument atd.

Například: Pokud je název našeho skriptu v `example.sh`

#!/bin/bash

echo Název skriptu: $0
echo První argument: $1
echo Druhý argument: $2

Pokud skript spustíme s `.example.sh hello_1 hello_2`, vypíše:

cli argumenty

cli argumenty

11) Jak používáte cyklus for k iteraci seznamu hodnot?

Vytvořte název skriptu `example.sh`.

#!/bin/bash

ovoce = (jablko banán třešeň datum)
pro ovoce v ${fruits[@]}; dělat
echo Aktuální ovoce: $ovoce
Hotovo

Vysvětlení:

Řádek `fruits=` vytváří pole s názvem ovoce se čtyřmi prvky: jablko, banán, třešeň a datum.

  • pro ovoce v ${fruits[@]}; do: Tento řádek začíná cyklus for. Zde je význam jednotlivých částí:
  • for fruit: Toto deklaruje proměnnou smyčky s názvem ovoce. V každé iteraci cyklu bude ovoce uchovávat hodnotu aktuálního prvku z pole ovoce.
  • ${fruits[@]}: Toto je rozšíření pole, které přebírá všechny prvky z pole ovoce. Syntaxe ${…} zajišťuje, že každý prvek je považován za samostatnou položku.
  • do: Toto klíčové slovo označuje začátek těla smyčky.
  • echo Aktuální ovoce: $ovoce: Tento řádek uvnitř smyčky používá příkaz echo k zobrazení aktuální hodnoty proměnné ovoce smyčky. Pro každé ovoce v poli vytiskne zprávu jako Aktuální ovoce: jablko.
  • hotovo: Toto klíčové slovo označuje konec těla smyčky. Oznámí skriptu, že smyčka skončila.
pro smyčku

pro smyčku

12) Napište shellový skript, který vypočítá součet celých čísel od 1 do N pomocí smyčky.

Vytvořte název skriptu `example.sh`.

#!/bin/bash

echo Zadejte číslo (N):
přečtěte si N
součet=0
for ((i=1; i<=$N; i++)); dělat
suma=$((součet + i))
Hotovo
echo Součet celých čísel od 1 do $N je: $součet

Vysvětlení:
Skript začíná tím, že vás požádá o zadání čísla (N) pomocí read. Toto číslo určí, kolikrát se smyčka spustí.

  1. Proměnná suma je inicializována na 0. Tato proměnná bude sledovat součet celých čísel.
  2. Cyklus for začíná for (( i=1; i<=$N; i++ )). Tato struktura smyčky se používá k opakování sady akcí určitý počet opakování, v tomto případě od 1 do hodnoty N.
  3. Uvnitř smyčky se dějí tyto věci:
    • i=1 nastaví proměnnou smyčky i na 1 na začátku každé iterace.
    • Podmínka smyčky i<=$N kontroluje, zda i je stále menší nebo rovno danému číslu N.
    • Pokud je podmínka pravdivá, tělo smyčky se provede.
    • sum=$((součet + i)) vypočítá novou hodnotu součtu přidáním aktuální hodnoty i. Tím se sečtou celá čísla od 1 do aktuální hodnoty i.
  4. Po každé iteraci i++ zvýší hodnotu i o 1.
  5. Smyčka pokračuje, dokud se podmínka i<=$N nestane nepravdivou (když i bude větší než N).
  6. Jakmile cyklus skončí, skript zobrazí součet celých čísel od 1 do zadaného čísla N.

439

13) Vytvořte skript, který hledá konkrétní slovo v souboru a počítá jeho výskyty.

Vytvořte název skriptu `word_count.sh`

#!/bin/bash

echo Zadejte slovo, které chcete vyhledat:
číst cílové_slovo
echo Zadejte název souboru:
číst název souboru
count=$(grep -o -w $target_word $filename | wc -l)
echo Slovo ‚$target_word‘ se v ‚$filename‘ objeví $countkrát.

Vysvětlení:

  • echo Zadejte slovo, které chcete vyhledat:: Tento řádek zobrazí zprávu s žádostí o zadání slova, které chce v souboru vyhledat.
  • read target_word: Tento řádek čte vstup poskytnutý uživatelem a ukládá jej do proměnné s názvem cílové_slovo.
  • echo Zadejte název souboru:: Na tomto řádku se zobrazí zpráva požadující uživatele, aby zadal název souboru, ve kterém chce hledat.
  • read filename: Tento řádek přečte vstup poskytnutý uživatelem a uloží jej do proměnné s názvem filename.
  • count=$(grep -o -w $cílové_slovo $název_souboru | wc -l): Tento řádek provádí hlavní práci skriptu. Pojďme si to rozebrat dále:
    • grep -o -w $cílové_slovo $název_souboru: Tato část příkazu hledá výskyty cílového_slova v zadaném souboru. Volby -o a -w zajistí, že se počítají pouze shody celých slov.
    • |: Toto je roura, která přebírá výstup předchozího příkazu a posílá jej jako vstup do dalšího příkazu.
    • wc -l: Tato část příkazu používá příkaz wc k počítání počtu řádků na vstupu. Volba -l konkrétně počítá řádky.
    • Celý příkaz vypočítá počet výskytů cílového_slova v souboru a tento počet přiřadí proměnné počet

441

14) Vysvětlete rozdíly mezi standardním výstupem (stdout) a standardní chybou (stderr).

Hlavní rozdíl mezi standardním výstupem (stdout) a standardní chybou (stderr) je následující:

  • Standardní výstup (stdout): Toto je výchozí výstupní proud, kam jde běžný výstup příkazu. Ve výchozím nastavení se zobrazuje na terminálu. Můžete jej přesměrovat do souboru pomocí>.
  • Standardní chyba (stderr): Toto je výstupní proud pro chybové zprávy a varování. Ve výchozím nastavení se také zobrazuje na terminálu. Můžete jej přesměrovat do souboru pomocí 2>.

15) Vysvětlete pojem podmíněné příkazy ve skriptování shellu.

Podmíněné příkazy ve skriptování shellu nám umožňují rozhodovat se a řídit tok našeho skriptu na základě určitých podmínek. Umožňují našemu skriptu provádět různé sady příkazů v závislosti na tom, zda je konkrétní podmínka pravdivá nebo nepravdivá. Primární podmíněné příkazy ve skriptování shellu jsou příkaz if, příkaz elif (volitelný) a příkaz else (nepovinný).

Zde je základní struktura podmíněného příkazu ve skriptování shellu:

if [ podmínka ]; pak
# Příkazy, které se mají provést, pokud je podmínka pravdivá
elif [ další_podmínka ]; pak
# Příkazy k provedení, pokud je other_condition pravdivá (volitelné)
jiný
# Příkazy, které se mají provést, pokud není splněna žádná z podmínek (volitelné)
být

Vysvětlení:

  • [ condition ] = Příkaz, který vyhodnotí podmínku a vrátí pravdivý (0) nebo nepravdivý (nenulový) stav ukončení.
  • then = Je klíčové slovo, které označuje, že následující příkazy budou provedeny, pokud se podmínka vyhodnotí jako pravdivá.
  • elif = (zkratka pro else if) Je to sekce, která nám umožňuje zadat další podmínky ke kontrole.
  • else = je to sekce, která obsahuje příkazy, které budou provedeny, pokud nebude splněna žádná z podmínek.
  • fi = Je to klíčové slovo, které označuje konec podmíněného bloku.

16) Jak čtete řádky ze souboru v shell skriptu?

Na číst řádky ze souboru ve skriptu shellu, můžeme použít různé metody, ale jedním z běžných přístupů je použití cyklu while v kombinaci s příkazem read. Můžeme to udělat takto:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Zkontrolujte, zda soubor existuje
if [ -e $soubor ]; pak
while IFS= read -r řádek; dělat
echo Čtení řádku: $řádek
# Zde přidejte svou logiku zpracování
hotovo <$soubor
jiný
echo Soubor nenalezen: $file
být

Vysvětlení:

  1. #!/bin/bash: Toto je řádek shebang, který určuje interpret (/bin/bash), který má být použit pro spuštění skriptu.
  2. file=/home/jayeshkumar/jayesh.txt: Tento řádek definuje soubor proměnné a přiřazuje úplnou cestu k souboru jayesh.txt v adresáři /home/jayeshkumar. Změňte tuto cestu tak, aby odpovídala skutečné cestě k souboru, který chcete číst.
  3. if [ -e $soubor ]; then: Tento řádek začíná příkazem if. Zkontroluje, zda soubor určený proměnnou $file existuje. Příznak -e kontroluje existenci souboru.
  4. while IFS= read -r řádek; do: Tento řádek spouští cyklus while, který čte řádky ze souboru.
    • IFS=: IFS (Interní oddělovač polí) je nastaven na prázdnou hodnotu, aby se zachovaly mezery na začátku a na konci.
    • read -r řádek: Přečte aktuální řádek ze souboru a uloží jej do proměnné řádek.
  5. echo Čtení řádku: $řádek: Tento řádek vytiskne obsah řádku, který byl přečten ze souboru. Proměnná $line obsahuje obsah aktuálního řádku.
  6. # Zde přidejte svou logiku zpracování: Toto je zástupný komentář, kde můžete přidat svou vlastní logiku pro zpracování každého řádku. Můžete například analyzovat řádek, extrahovat informace nebo provádět konkrétní akce na základě obsahu.
  7. hotovo <$soubor: Označuje konec cyklu while. < $soubor přesměruje obsah souboru, který má být načten smyčkou.
  8. else: Pokud soubor neexistuje (podmínka v příkazu if je nepravdivá), skript spustí kód ve větvi else.
  9. echo Soubor nenalezen: $soubor: Tento řádek vytiskne chybovou zprávu oznamující, že zadaný soubor nebyl nalezen.
  10. fi: Tento řádek označuje konec příkazu if.
čtení souboru

čtení souboru

Zde jsme použili ` pwd ` k získání cesty k aktuálnímu adresáři.

17) Napište do shellového skriptu funkci, která vypočítá faktoriál daného čísla.

Tady je ten skriptvypočítat faktoriáldaného čísla.

#!/bin/bash
# Definujte funkci pro výpočet faktoriálu
vypočítat_faktor() {
num=$1
fakt=1
pro ((i=1; i<=num; i++)); dělat
fakt=$((fakt * i))
Hotovo
echo $fakt
}
# Vyzvěte uživatele, aby zadal číslo
echo Zadejte číslo:
číst input_num
# Zavolejte funkci vypočítej_faktor se vstupním číslem
factorial_result=$(vypočítat_faktor $input_num)
# Zobrazte výsledek faktoriálu
echo Faktorial $input_num je: $factorial_result

Vysvětlení:

  1. Skript začíná řádkem shebang #!/bin/bash, aby se určil interpret.
  2. vypočítat_faktor () je definován jako funkce. Vyžaduje jeden argument, num, což je číslo, pro které je třeba vypočítat faktoriál.
  3. Uvnitř funkce je fakt inicializován na 1. Tato proměnná uloží výsledek faktoriálu.
  4. Cyklus for iteruje od 1 do daného čísla (num). V každé iteraci násobí aktuální hodnotu faktu indexem smyčky i.
  5. Po dokončení cyklu obsahuje proměnná fakt vypočítaný faktoriál.
  6. Skript vyzve uživatele k zadání čísla pomocí read.
  7. Funkce vypočítej_faktor je volána s číslem zadaným uživatelem a výsledek se uloží do proměnné faktoriální_výsledek.
  8. Nakonec skript zobrazí vypočítaný výsledek faktoriálu.
Faktorový

Faktorový

18) Jak zacházíte se signály jako Ctrl+C ve skriptu shellu?

Ve skriptu shellu můžete zpracovávat signály jako Ctrl+C (známé také jako SIGINT) pomocí příkazu trap. Ctrl+C generuje signál SIGINT, když jej uživatel stiskne k přerušení běžícího skriptu nebo programu. Pomocí příkazu trap můžete určit akce, které se mají provést, když je přijat konkrétní signál. Zde je návod, jak zacházet se signály jako Ctrl+C ve skriptu shellu:

#!/bin/bash
cleanup() {
echo Skript byl přerušen. Provádí se úklid…
# Zde přidejte své čisticí akce
výstup 1
}
# Nastavte depeši pro volání funkce čištění při přijetí Ctrl+C (SIGINT).
čištění pasti SIGINT
# Zbytek vašeho skriptu
echo Běží…
spát 10
echo Hotovo.

Zpracování signálů je důležité pro to, aby byly skripty robustní a aby bylo zajištěno, že zvládnou neočekávaná přerušení elegantně. Funkci čištění můžete přizpůsobit tak, aby odpovídala vašim konkrétním potřebám, jako je zavírání souborů, zastavování procesů nebo protokolování informací před ukončením skriptu.

Vysvětlení:

  1. #!/bin/bash: Tento řádek Shebang určuje interpret, který má být použit pro spuštění skriptu.
  2. cleanup() { … }: Definuje funkci s názvem cleanup. Do této funkce můžete zahrnout jakékoli akce, které je třeba provést, když je skript přerušen, jako je zavření souborů, uvolnění prostředků nebo provedení jiných úloh čištění.
  3. trap cleanup SIGINT: Příkaz trap se používá k nastavení obsluhy signálu. V tomto případě určuje, že když je přijat signál SIGINT (Ctrl+C), měla by být provedena funkce čištění.
  4. echo Běží…, spánek 10, echo Dokončeno.: Toto jsou pouze ukázkové příkazy pro simulaci provádění skriptu.

446

19) Vytvořte skript, který zkontroluje a odstraní duplicitní řádky v textovém souboru.

Zde je náš linuxový skript, ve kterém odstraníme duplicitní řádky z textového souboru.

#!/bin/bash
vstupní_soubor=vstup.txt
výstupní_soubor=výstup.txt
sort $input_file | uniq> $output_file
echo Duplicitní řádky byly úspěšně odstraněny.

Vysvětlení:

  1. Skript začíná znakem shebang (#!/bin/bash), který označuje, že skript by měl být interpretován pomocí shellu Bash.
  2. Proměnná input_file je nastavena na název vstupního souboru obsahujícího duplicitní řádky (změňte jej na skutečný název vstupního souboru).
  3. Proměnná output_file je nastavena na název výstupního souboru, ze kterého budou odstraněny duplikáty (změňte jej na požadovaný název výstupního souboru).
  4. Skript používá příkaz sort k řazení řádků ve vstupním souboru. Řazení řádků zajišťuje, že duplicitní řádky jsou seskupeny.
  5. Seřazené řádky jsou pak předány příkazem uniq, který odstraní po sobě jdoucí duplicitní řádky. Výstup tohoto procesu je přesměrován do výstupního souboru.
  6. Po odstranění duplikátů skript vytiskne zprávu o úspěchu.
odstranění duplicitních čar

odstranění duplicitních čar

Zde používáme ` kočka ` pro zobrazení textu uvnitř textového souboru.

20) Napište skript, který vygeneruje bezpečné náhodné heslo.

Zde je náš skript pro vygenerování bezpečného náhodného hesla.

#!/bin/bash
# Funkce pro generování náhodného hesla
vygenerovat_heslo() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Vyvolejte funkci a uložte vygenerované heslo
heslo=$(generate_password)
echo Vygenerované heslo: $password

Poznámka: Uživatel může odpovídajícím způsobem změnit délku hesla nahrazením čísla `12`.

Vysvětlení:

  1. Skript začíná znakem shebang (#!/bin/bash), což znamená, že by měl být interpretován pomocí shellu Bash.
  2. Funkce vygenerovat_heslo je definována pro generování náhodného hesla. Funguje to takto:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 rozdělí filtrovaná náhodná data na řádky o šířce 12 znaků.
    • head -n 1 vybere první řádek, čímž získáme náhodnou sekvenci znaků o délce 12.
  3. Proměnná password je přiřazena výsledku volání funkce vygenerovat_heslo.
  4. Nakonec se vygenerované heslo zobrazí pomocí echo.

448

21) Napište shellový skript, který vypočítá celkovou velikost všech souborů v adresáři.

Zde je shell skript pro výpočet celkové velikosti všech souborů v adresáři.

#!/bin/bash
adresář=/cesta/k/vašemu/adresáři
total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
echo Celková velikost souborů v $adresáři: $celková_velikost

Vysvětlení:

  1. Skript začíná znakem #!/bin/bash shebang, což znamená, že by měl být interpretován pomocí shellu Bash.
  2. Proměnná adresář je nastavena na cestu k adresáři, pro který chcete vypočítat celkovou velikost souboru. Nahraďte /cesta/k/vašemu/adresáři skutečnou cestou.
  3. Příkaz du se používá k odhadu využití místa v souboru. Použité možnosti jsou:
    • -c: Vytvořte celkový součet.
    • -s: Zobrazí pouze celkovou velikost zadaného adresáře.
    • -h: Velikosti tisku ve formátu čitelném pro člověka (např. KB, MB, GB).
  4. Výstup du je přesměrován do grep total, aby se odfiltroval řádek, který obsahuje celkovou velikost.
  5. awk ‚{print $1}‘ se používá k extrahování prvního pole (celkové velikosti) z řádku.
  6. Vypočítaná celková velikost je uložena v proměnné total_size.
  7. Nakonec skript zobrazí celkovou velikost pomocí echa.
Celková velikost souborů

Celková velikost souborů

Zde jsme použili ` pwd ` k zobrazení aktuální cesty k adresáři.

22) Vysvětlete rozdíl mezi příkazy if a elif ve skriptování shellu.

Vlastnosti 'Pokud'Staiftement Prohlášení `elif`
Účel Vysvětlete rozdíl mezi příkazy if a elif ve skriptování shellu. Poskytuje alternativní podmínky ke kontrole, když je počáteční podmínka if nepravdivá.
používání Používá se pro počáteční stav. Používá se po počáteční podmínce if ke kontrole dalších podmínek.
počet Bloků Může mít pouze jeden blok if. Může mít více bloků elif, ale pouze jeden jiný blok (volitelné).
Provedení Pokud je podmínka pravdivá, provede blok kódu spojený s příkazem if. Pokud je podmínka nepravdivá, provede se blok else (pokud existuje) (nepovinné). Kontroluje každou podmínku elif v pořadí. Pokud je jedna podmínka elif pravdivá, provede se odpovídající blok kódu a skript ukončí celý podmíněný blok. Pokud není splněna žádná z podmínek elif, provede se blok else (pokud existuje).
Vnořené struktury Lze vnořit do jiných bloků if, elif nebo else. Nelze vnořit do jiného bloku elif, ale lze jej použít uvnitř bloku if nebo else.

Pojďme to pochopit na příkladu.

#!/bin/bash
číslo = 5
if [ $číslo -gt 10 ]; pak
echo $číslo je větší než 10
jiný
echo $číslo není větší než 10
být
echo ———
if [ $číslo -gt 10 ]; pak
echo $číslo je větší než 10
elif [ $číslo -eq 10 ]; pak
echo $číslo se rovná 10
jiný
echo $číslo je menší než 10
být

Vysvětlení:

V tomto příkladu první blok if kontroluje, zda je číslo větší než 10. Pokud ne, vytiskne zprávu, že číslo není větší než 10. Druhý blok s příkazy elif kontroluje více podmínek postupně, dokud jedna z nich není pravdivá. V tomto případě, protože hodnota čísla je 5, výstup bude:

if_elif rozdíl

if_elif rozdíl

23) Jak používáte smyčku while k opakovanému provádění příkazů?

Smyčka while se používá ve skriptování shellu k opakovanému provádění sady příkazů, pokud je zadaná podmínka pravdivá. Smyčka pokračuje ve vykonávání příkazů, dokud se podmínka nestane nepravdivou.

Zde je základní syntaxe cyklu while:

zatímco [ podmínka ]; dělat
# Příkazy, které mají být provedeny
Hotovo

Vysvětlení:

  1. Cyklus `while` začíná klíčovým slovem `while` následovaným podmínkou uzavřenou v hranatých závorkách `[ ]`.
  2. Tělo smyčky, které obsahuje příkazy, které se mají provést, je uzavřeno mezi klíčovými slovy `do` a `done`.
  3. Smyčka nejprve zkontroluje stav. Pokud je podmínka pravdivá, provedou se příkazy v těle smyčky. Po provedení těla smyčky se podmínka znovu zkontroluje a proces se opakuje, dokud se podmínka nestane nepravdivou.

Příklad: Pokud chceme tisknout čísla od 1 do 5

#!/bin/bash
čítač=1
zatímco [ $counter -le 5 ]; dělat
Číslo echa: $counter
counter=$((counter + 1))
Hotovo

Vysvětlení:

  • Proměnná čítače je nastavena na 1.
  • Cyklus while kontroluje, zda je hodnota čítače menší nebo rovna 5. Dokud je tato podmínka pravdivá, cyklus pokračuje v provádění.
  • Uvnitř smyčky je aktuální hodnota čítače vytištěna pomocí echa.
  • Čítač se zvýší o 1 pomocí výrazu $((počítadlo + 1)).
zatímco smyčka

zatímco smyčka

24) Vytvořte shellový skript, který najde a vypíše všechny prázdné soubory v adresáři.

Shell skript, který můžete použít k nalezení a výpisu všech prázdných souborů v adresáři pomocí příkazů `find` a `stat`:

#!/bin/bash
adresář=$1″
if [ -z $adresář ]; pak
Použití echa: 0 $
výstup 1
být

pokud [ ! -d $adresář ]; pak
echo Error: '$directory' není platný adresář.
výstup 1
být
echo Prázdné soubory v $adresáři:
najít $adresář -type f -empty

Vysvětlení:

  1. ` #!/bin/bash `: Toto se nazývá shebang a říká operačnímu systému, aby použil shell Bash k interpretaci a spuštění skriptu.
  2. ` adresář=$1″ `: Tento řádek přiřadí první argument příkazového řádku (označený $1) k proměnné ` adresář '.
  3. ` if [ -z $adresář ]; pak `: Tento řádek začíná příkazem if, který kontroluje, zda je ` adresář ` proměnná je prázdná (-z testuje prázdný řetězec).
  4. ` Použití echa: 0 $ `: Pokud je adresář prázdný, vypíše tento řádek zprávu o použití, kde ` 0 $ ` představuje název skriptu.
  5. ` výstup 1 `: Tento řádek ukončí skript s kódem ukončení ` 1 `, což znamená chybu.
  6. ` být `: Tento řádek označuje konec znaku ` -li ` prohlášení.
  7. ` pokud [ ! -d $adresář ]; pak `: Toto spustí další příkaz if, který zkontroluje, zda zadaný adresář existuje (` -d ` testy pro adresář).
  8. ` echo Error: '$directory' není platný adresář. `: Pokud zadaný adresář neexistuje, vypíše tento řádek chybovou zprávu.
  9. ` výstup 1 `: Ukončí skript s kódem ukončení ` 1 '.
  10. ` být `: Označuje konec druhého ` pokud' prohlášení.
  11. ` echo Prázdné soubory v $adresáři: `: Pokud je vše zatím platné, vypíše tento řádek zprávu, že skript vypíše prázdné soubory v zadaném adresáři.
  12. ` najít $adresář -type f -empty `: Tento řádek používá znak ` nalézt ` příkaz k vyhledání prázdných souborů (` -prázdný `) typu běžné soubory (` - typ f `) v zadaném adresáři. Poté vypíše tyto prázdné soubory.
Hledání prázdných souborů

Hledání prázdných souborů

Poznámka : Při spouštění skriptu musíme jako argument zadat adresář. Zde jsme použili cestu aktuálního adresáře home/jayeshkumar/

25) Jaký je účel příkazu read ve skriptování shellu?

Příkaz read ve skriptování shellu umožňuje skriptu požádat vás o informace. Je to jako když vám počítač položí otázku a čeká na vaši odpověď. To je užitečné pro skripty, které vyžadují, abyste něco napsali, nebo když skript potřebuje pracovat s informacemi ze souborů. Příkaz read pomáhá skriptu zastavit se a čekat na to, co napíšete, a pak může tyto informace použít k provádění dalších věcí ve skriptu.

Syntaxe příkazu read:

read variable_name>

Příklad : Pokud chceme převzít jméno jako vstup od uživatele pro jeho tisk.

#!/bin/bash
echo Zadejte prosím své jméno:
číst jméno
echo Ahoj, $name!

453

přečíst jméno

Stručně řečeno, příkaz read se používá k zachycení uživatelského vstupu nebo dat ze souborů v rámci skriptů shellu, díky čemuž jsou skripty interaktivnější a všestrannější.

26) Napište shellový skript, který převede všechny názvy souborů v adresáři na malá písmena.

Zde je skript shellu, který převede všechny názvy souborů v adresáři na malá písmena.

#!/bin/bash
adresář=$1″
if [ -z $adresář ]; pak
echo Použití: $0
výstup 1
být

pokud [ ! -d $adresář ]; pak

echo Error: '$directory' není platný adresář.
výstup 1
být

cd $adresář || výstup 1

pro soubor ve formátu *; dělat
if [ -f $soubor ]; pak
newname=$(echo $file | tr ‘A-Z’ ‘a-z’)
[ $file != $newname ] && mv $file $newname
být
Hotovo

Vysvětlení:

  1. #!/bin/bash : Toto je shebang, který určuje, že skript by měl být interpretován pomocí shellu Bash.
  2. adresář=$1″ : Tento řádek přiřadí první argument příkazového řádku adresáři proměnné.
  3. if [ -z $adresář ]; pak : Tento řádek kontroluje, zda je proměnná adresáře prázdná (při spuštění skriptu není zadán žádný argument).
  4. Použití echa: 0 $ : Pokud je adresář prázdný, vytiskne tento řádek zprávu o použití s ​​názvem skriptu ($0).
  5. výstup 1 : Tento řádek ukončí skript s kódem ukončení 1, což znamená, že došlo k chybě.
  6. F i: Označuje konec prvního příkazu if.
  7. pokud [ ! -d $adresář ]; pak : Tento řádek kontroluje, zda zadaný adresář neexistuje (-d testuje adresář).
  8. echo Error: '$directory' není platný adresář. : Pokud zadaný adresář neexistuje, vypíše tento řádek chybovou zprávu.
  9. výstup 1 : Ukončí skript s kódem ukončení 1.
  10. být : Označuje konec druhého příkazu if.
  11. cd $adresář || výstup 1 : Změní aktuální pracovní adresář na určený adresář. Pokud se změna adresáře nezdaří (např. neexistující adresář), skript se ukončí s chybovým kódem.
  12. pro soubor ve formátu *; dělat: pro soubor ve formátu *; dělat: spustí smyčku, která iteruje všechny položky v aktuálním adresáři (* odpovídá všem názvům souborů).
  13. if [ -f $soubor ]; pak : Zkontroluje, zda je aktuální položka iterace smyčky běžný soubor (-f testuje běžný soubor).
  14. newname=$(echo $file | tr ‘A-Z’ ‘a-z’) : Převede aktuální název souboru ($file) na malá písmena pomocí příkazu tr a uloží výsledek do proměnné newname.
  15. [ $file != $newname ] && mv $file $newname : Porovná původní název souboru s novým názvem souboru s malými písmeny. Pokud se liší, přejmenuje soubor pomocí příkazu mv.
  16. být : Označuje konec vnitřního příkazu if.
  17. Hotovo : Označuje konec smyčky.

454

Poznámka : Při spouštění skriptu musíme jako argument zadat adresář. Zde jsme použili cestu aktuálního adresáře home/jayeshkumar/test

27) Jak můžete použít aritmetické operace v shell skriptu?

Aritmetické operace lze provádět v rámci skriptu shellu pomocí různých vestavěných metod. Shell poskytuje mechanismy pro jednoduché aritmetické výpočty pomocí aritmetické expanze jako:

  1. Aritmetické rozšíření ($((…)))
  2. Použití příkazu expr
  3. Pomocí příkazu let

Zde je náš skript Shell vysvětlující všechny tři metody pro aritmetické operace.

#!/bin/bash
číslo1=10
číslo 2=5

#Aritmetické rozšíření ($((…)))

výsledek=$((číslo1 + číslo2))
echo Součet: $výsledek

#Pomocí příkazu expr

součet=$(výraz $num1 + $num2)
echo Součet: $součet

#Pomocí příkazu let

nechť součet = číslo1 + číslo2
echo Součet: $součet

Vysvětlení:

  1. `#!/bin/bash` : Toto je shebang, který určuje, že skript by měl být interpretován pomocí shellu Bash.
  2. `číslo1=10` a ' číslo2=5` : Tyto řádky přiřazují hodnoty 10 a 5 proměnným ` číslo1 ` a ` číslo2 `, resp.
  3. „#Aritmetické rozšíření ($((…))“) : Toto je komentář označující začátek sekce, která demonstruje aritmetické rozšíření.
  4. `výsledek=$((číslo1 + číslo2))` : Tento řádek používá aritmetické rozšíření k výpočtu součtu ` číslo1 ` a ` číslo2 ` a uloží výsledek do ` výsledek ` proměnná.
  5. `echo Sum: $výsledek` : Tento řádek vytiskne vypočítaný součet pomocí hodnoty uložené v ` výsledek ` proměnná.
  6. `#Použití příkazu expr` : Toto je komentář označující začátek sekce, která ukazuje použití ` expr ` příkaz pro aritmetické operace.
  7. `součet=$(výraz $číslo1 + $číslo2)` : Tento řádek používá ` expr ` příkaz k výpočtu součtu ` číslo1 ` a ` číslo2 ` a uloží výsledek do ` součet ` proměnná. Všimněte si, že ' expr ` příkaz vyžaduje mezery kolem operátorů.
  8. `echo Sum: $sum` : Tento řádek vytiskne vypočítaný součet pomocí hodnoty uložené v ` součet ` proměnná.
  9. `#Pomocí příkazu let` : Toto je komentář označující začátek sekce, která ukazuje použití ` nechat ` příkaz pro aritmetické operace.
  10. `nechť součet = číslo1 + číslo2″` : Tento řádek používá ` nechat ` příkaz k výpočtu součtu ` číslo1 ` a ` číslo2 ` a výsledek přiřadí ` součet ` proměnná. ' nechat ` příkaz nevyžaduje mezery kolem operátorů.
  11. `echo Sum: $sum` : Tento řádek vytiskne vypočítaný součet pomocí hodnoty uložené v ` součet ` proměnná.
aritmetický

aritmetický

28) Vytvořte skript, který zkontroluje, zda je síťový hostitel dosažitelný.

Zde je jednoduchý skript shellu, který používá příkaz ping ke kontrole, zda je síťový hostitel dosažitelný:

#!/bin/bash
hostitel = $ 1″
if [ -z $hostitel ]; pak
Použití echa: 0 $
výstup 1
být
ping -c 4 $host

pokud [ $? -ekv 0]; pak
echo $host je dosažitelný.
jiný
echo $host není dosažitelný.
být

Vysvětlení:

  1. Jako argument bere název hostitele nebo IP adresu a kontroluje, zda je argument uveden.
  2. Pokud není zadán žádný argument, zobrazí se zpráva o použití a skončí se.
  3. Používá příkaz ping s volbou -c 4 k odeslání čtyř požadavků ICMP echo na zadaný hostitel.
  4. Po spuštění příkazu ping zkontroluje stav ukončení ($?). Pokud je stav ukončení 0, znamená to, že hostitel je dosažitelný a skript vytiskne zprávu o úspěchu. V opačném případě vytiskne zprávu o selhání.

456

Poznámka : Při spouštění skriptu musíme jako argument zadat název hostitele. Zde jsme použili google.com

29) Napište skript Shell pro nalezení největšího prvku v poli:

Zde je skript shellu k nalezení největšího prvku v poli.

#!/bin/bash
# Deklarujte pole
pole=(3 56 24 89 67)

# Inicializovat proměnnou pro uložení maximální hodnoty, počínaje prvním prvkem

max=${array[0]}

# Iterujte pole

pro číslo v ${array[@]}; dělat

# Porovnejte každý prvek s aktuálním maximem

if ((počet> max)); pak
max=$num
být
Hotovo

# Vytiskněte maximální hodnotu

echo Maximální prvek v poli je: $max

Vysvětlení:

  1. ` #!/bin/bash `: Řádek shebang určuje, že skript by měl být interpretován pomocí prostředí Bash.
  2. ` pole=(3 56 24 89 67) `: Pole je deklarováno a inicializováno hodnotami.
  3. ` max=${array[0]} `: `max` je inicializováno prvním prvkem pole.
  4. ` pro číslo v ${array[@]}; dělat `: Smyčka `for` se používá k iteraci mezi prvky pole.
  5. ` if ((počet> max)); pak `: Příkaz `if` kontroluje, zda je aktuální prvek `num` větší než aktuální maximum `max`.
  6. ` max=$num`: If`num ` je větší než `max`, `max` se aktualizuje o hodnotu num.
  7. ` Hotovo `: Smyčka `for` je uzavřena.
  8. ` echo Maximální prvek v poli je: $max `: Nakonec skript vypíše maximální hodnotu nalezenou v poli.
461

největší počet

30) Napište skript pro výpočet součtu prvků v poli.

#!/bin/bash

# Deklarujte pole

pole=(1 65 22 19 94)

# Inicializujte proměnnou pro uložení součtu

součet=0

# Iterujte pole a přidejte každý prvek k součtu

pro číslo v ${array[@]}; dělat
dopoledne = $ ((dopoledne + dopoledne))
Hotovo

# Vytiskněte součet

echo Součet prvků v poli je: $sum

Vysvětlení:

` #!/bin/bash `: Řádek shebang určuje, že skript by měl být interpretován pomocí prostředí Bash.

` pole=(1 65 22 19 94) `: Pole je deklarováno a inicializováno hodnotami.

` součet=0 `:` součet ` se inicializuje na nulu, aby udržel součet prvků.

` pro číslo v ${array[@]}; dělat `: A` pro ` smyčka se používá k iteraci mezi prvky pole.

` dopoledne = $ ((dopoledne + dopoledne)) `: Uvnitř smyčky každý prvek ` na jednom ` se přidává k ` součet ` proměnná.

` Hotovo `: The` pro ` smyčka je uzavřena.

`echo Součet prvků v poli je: $sum`: Nakonec skript vypíše součet všech prvků v poli.

462

Součet prvků

Zjistěte více o skriptech Shell

Závěr

Všichni geekové víme, že shell skript je velmi užitečný pro zvýšení produktivity práce a také pro úsporu času. Takže v tomto článku jsme se zabývali 30 příkladů velmi užitečných a nejvíce podvodných shellových skriptů . Doufáme, že vám tento kompletní průvodce příkladem skriptování shellu pomůže porozumět všemu o skriptech shellu.




echo První argument:
echo Druhý argument:

Pokud skript spustíme s `.example.sh hello_1 hello_2`, vypíše:

cli argumenty

cli argumenty

11) Jak používáte cyklus for k iteraci seznamu hodnot?

Vytvořte název skriptu `example.sh`.

#!/bin/bash

ovoce = (jablko banán třešeň datum)
pro ovoce v ${fruits[@]}; dělat
echo Aktuální ovoce: $ovoce
Hotovo

Vysvětlení:

Řádek `fruits=` vytváří pole s názvem ovoce se čtyřmi prvky: jablko, banán, třešeň a datum.

  • pro ovoce v ${fruits[@]}; do: Tento řádek začíná cyklus for. Zde je význam jednotlivých částí:
  • for fruit: Toto deklaruje proměnnou smyčky s názvem ovoce. V každé iteraci cyklu bude ovoce uchovávat hodnotu aktuálního prvku z pole ovoce.
  • ${fruits[@]}: Toto je rozšíření pole, které přebírá všechny prvky z pole ovoce. Syntaxe ${…} zajišťuje, že každý prvek je považován za samostatnou položku.
  • do: Toto klíčové slovo označuje začátek těla smyčky.
  • echo Aktuální ovoce: $ovoce: Tento řádek uvnitř smyčky používá příkaz echo k zobrazení aktuální hodnoty proměnné ovoce smyčky. Pro každé ovoce v poli vytiskne zprávu jako Aktuální ovoce: jablko.
  • hotovo: Toto klíčové slovo označuje konec těla smyčky. Oznámí skriptu, že smyčka skončila.
pro smyčku

pro smyčku

12) Napište shellový skript, který vypočítá součet celých čísel od 1 do N pomocí smyčky.

Vytvořte název skriptu `example.sh`.

#!/bin/bash

echo Zadejte číslo (N):
přečtěte si N
součet=0
for ((i=1; i<=$N; i++)); dělat
suma=$((součet + i))
Hotovo
echo Součet celých čísel od 1 do $N je: $součet

Vysvětlení:
Skript začíná tím, že vás požádá o zadání čísla (N) pomocí read. Toto číslo určí, kolikrát se smyčka spustí.

  1. Proměnná suma je inicializována na 0. Tato proměnná bude sledovat součet celých čísel.
  2. Cyklus for začíná for (( i=1; i<=$N; i++ )). Tato struktura smyčky se používá k opakování sady akcí určitý počet opakování, v tomto případě od 1 do hodnoty N.
  3. Uvnitř smyčky se dějí tyto věci:
    • i=1 nastaví proměnnou smyčky i na 1 na začátku každé iterace.
    • Podmínka smyčky i<=$N kontroluje, zda i je stále menší nebo rovno danému číslu N.
    • Pokud je podmínka pravdivá, tělo smyčky se provede.
    • sum=$((součet + i)) vypočítá novou hodnotu součtu přidáním aktuální hodnoty i. Tím se sečtou celá čísla od 1 do aktuální hodnoty i.
  4. Po každé iteraci i++ zvýší hodnotu i o 1.
  5. Smyčka pokračuje, dokud se podmínka i<=$N nestane nepravdivou (když i bude větší než N).
  6. Jakmile cyklus skončí, skript zobrazí součet celých čísel od 1 do zadaného čísla N.

439

13) Vytvořte skript, který hledá konkrétní slovo v souboru a počítá jeho výskyty.

Vytvořte název skriptu `word_count.sh`

#!/bin/bash

echo Zadejte slovo, které chcete vyhledat:
číst cílové_slovo
echo Zadejte název souboru:
číst název souboru
count=$(grep -o -w $target_word $filename | wc -l)
echo Slovo ‚$target_word‘ se v ‚$filename‘ objeví $countkrát.

jak spárovat sluchátka beats

Vysvětlení:

  • echo Zadejte slovo, které chcete vyhledat:: Tento řádek zobrazí zprávu s žádostí o zadání slova, které chce v souboru vyhledat.
  • read target_word: Tento řádek čte vstup poskytnutý uživatelem a ukládá jej do proměnné s názvem cílové_slovo.
  • echo Zadejte název souboru:: Na tomto řádku se zobrazí zpráva požadující uživatele, aby zadal název souboru, ve kterém chce hledat.
  • read filename: Tento řádek přečte vstup poskytnutý uživatelem a uloží jej do proměnné s názvem filename.
  • count=$(grep -o -w $cílové_slovo $název_souboru | wc -l): Tento řádek provádí hlavní práci skriptu. Pojďme si to rozebrat dále:
    • grep -o -w $cílové_slovo $název_souboru: Tato část příkazu hledá výskyty cílového_slova v zadaném souboru. Volby -o a -w zajistí, že se počítají pouze shody celých slov.
    • |: Toto je roura, která přebírá výstup předchozího příkazu a posílá jej jako vstup do dalšího příkazu.
    • wc -l: Tato část příkazu používá příkaz wc k počítání počtu řádků na vstupu. Volba -l konkrétně počítá řádky.
    • Celý příkaz vypočítá počet výskytů cílového_slova v souboru a tento počet přiřadí proměnné počet

441

14) Vysvětlete rozdíly mezi standardním výstupem (stdout) a standardní chybou (stderr).

Hlavní rozdíl mezi standardním výstupem (stdout) a standardní chybou (stderr) je následující:

  • Standardní výstup (stdout): Toto je výchozí výstupní proud, kam jde běžný výstup příkazu. Ve výchozím nastavení se zobrazuje na terminálu. Můžete jej přesměrovat do souboru pomocí>.
  • Standardní chyba (stderr): Toto je výstupní proud pro chybové zprávy a varování. Ve výchozím nastavení se také zobrazuje na terminálu. Můžete jej přesměrovat do souboru pomocí 2>.

15) Vysvětlete pojem podmíněné příkazy ve skriptování shellu.

Podmíněné příkazy ve skriptování shellu nám umožňují rozhodovat se a řídit tok našeho skriptu na základě určitých podmínek. Umožňují našemu skriptu provádět různé sady příkazů v závislosti na tom, zda je konkrétní podmínka pravdivá nebo nepravdivá. Primární podmíněné příkazy ve skriptování shellu jsou příkaz if, příkaz elif (volitelný) a příkaz else (nepovinný).

Zde je základní struktura podmíněného příkazu ve skriptování shellu:

if [ podmínka ]; pak
# Příkazy, které se mají provést, pokud je podmínka pravdivá
elif [ další_podmínka ]; pak
# Příkazy k provedení, pokud je other_condition pravdivá (volitelné)
jiný
# Příkazy, které se mají provést, pokud není splněna žádná z podmínek (volitelné)
být

Vysvětlení:

  • [ condition ] = Příkaz, který vyhodnotí podmínku a vrátí pravdivý (0) nebo nepravdivý (nenulový) stav ukončení.
  • then = Je klíčové slovo, které označuje, že následující příkazy budou provedeny, pokud se podmínka vyhodnotí jako pravdivá.
  • elif = (zkratka pro else if) Je to sekce, která nám umožňuje zadat další podmínky ke kontrole.
  • else = je to sekce, která obsahuje příkazy, které budou provedeny, pokud nebude splněna žádná z podmínek.
  • fi = Je to klíčové slovo, které označuje konec podmíněného bloku.

16) Jak čtete řádky ze souboru v shell skriptu?

Na číst řádky ze souboru ve skriptu shellu, můžeme použít různé metody, ale jedním z běžných přístupů je použití cyklu while v kombinaci s příkazem read. Můžeme to udělat takto:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Zkontrolujte, zda soubor existuje
if [ -e $soubor ]; pak
while IFS= read -r řádek; dělat
echo Čtení řádku: $řádek
# Zde přidejte svou logiku zpracování
hotovo <$soubor
jiný
echo Soubor nenalezen: $file
být

Vysvětlení:

  1. #!/bin/bash: Toto je řádek shebang, který určuje interpret (/bin/bash), který má být použit pro spuštění skriptu.
  2. file=/home/jayeshkumar/jayesh.txt: Tento řádek definuje soubor proměnné a přiřazuje úplnou cestu k souboru jayesh.txt v adresáři /home/jayeshkumar. Změňte tuto cestu tak, aby odpovídala skutečné cestě k souboru, který chcete číst.
  3. if [ -e $soubor ]; then: Tento řádek začíná příkazem if. Zkontroluje, zda soubor určený proměnnou $file existuje. Příznak -e kontroluje existenci souboru.
  4. while IFS= read -r řádek; do: Tento řádek spouští cyklus while, který čte řádky ze souboru.
    • IFS=: IFS (Interní oddělovač polí) je nastaven na prázdnou hodnotu, aby se zachovaly mezery na začátku a na konci.
    • read -r řádek: Přečte aktuální řádek ze souboru a uloží jej do proměnné řádek.
  5. echo Čtení řádku: $řádek: Tento řádek vytiskne obsah řádku, který byl přečten ze souboru. Proměnná $line obsahuje obsah aktuálního řádku.
  6. # Zde přidejte svou logiku zpracování: Toto je zástupný komentář, kde můžete přidat svou vlastní logiku pro zpracování každého řádku. Můžete například analyzovat řádek, extrahovat informace nebo provádět konkrétní akce na základě obsahu.
  7. hotovo <$soubor: Označuje konec cyklu while. < $soubor přesměruje obsah souboru, který má být načten smyčkou.
  8. else: Pokud soubor neexistuje (podmínka v příkazu if je nepravdivá), skript spustí kód ve větvi else.
  9. echo Soubor nenalezen: $soubor: Tento řádek vytiskne chybovou zprávu oznamující, že zadaný soubor nebyl nalezen.
  10. fi: Tento řádek označuje konec příkazu if.
čtení souboru

čtení souboru

Zde jsme použili ` pwd ` k získání cesty k aktuálnímu adresáři.

17) Napište do shellového skriptu funkci, která vypočítá faktoriál daného čísla.

Tady je ten skriptvypočítat faktoriáldaného čísla.

#!/bin/bash
# Definujte funkci pro výpočet faktoriálu
vypočítat_faktor() {
num=
fakt=1
pro ((i=1; i<=num; i++)); dělat
fakt=$((fakt * i))
Hotovo
echo $fakt
}
# Vyzvěte uživatele, aby zadal číslo
echo Zadejte číslo:
číst input_num
# Zavolejte funkci vypočítej_faktor se vstupním číslem
factorial_result=$(vypočítat_faktor $input_num)
# Zobrazte výsledek faktoriálu
echo Faktorial $input_num je: $factorial_result

Vysvětlení:

  1. Skript začíná řádkem shebang #!/bin/bash, aby se určil interpret.
  2. vypočítat_faktor () je definován jako funkce. Vyžaduje jeden argument, num, což je číslo, pro které je třeba vypočítat faktoriál.
  3. Uvnitř funkce je fakt inicializován na 1. Tato proměnná uloží výsledek faktoriálu.
  4. Cyklus for iteruje od 1 do daného čísla (num). V každé iteraci násobí aktuální hodnotu faktu indexem smyčky i.
  5. Po dokončení cyklu obsahuje proměnná fakt vypočítaný faktoriál.
  6. Skript vyzve uživatele k zadání čísla pomocí read.
  7. Funkce vypočítej_faktor je volána s číslem zadaným uživatelem a výsledek se uloží do proměnné faktoriální_výsledek.
  8. Nakonec skript zobrazí vypočítaný výsledek faktoriálu.
Faktorový

Faktorový

18) Jak zacházíte se signály jako Ctrl+C ve skriptu shellu?

Ve skriptu shellu můžete zpracovávat signály jako Ctrl+C (známé také jako SIGINT) pomocí příkazu trap. Ctrl+C generuje signál SIGINT, když jej uživatel stiskne k přerušení běžícího skriptu nebo programu. Pomocí příkazu trap můžete určit akce, které se mají provést, když je přijat konkrétní signál. Zde je návod, jak zacházet se signály jako Ctrl+C ve skriptu shellu:

#!/bin/bash
cleanup() {
echo Skript byl přerušen. Provádí se úklid…
# Zde přidejte své čisticí akce
výstup 1
}
# Nastavte depeši pro volání funkce čištění při přijetí Ctrl+C (SIGINT).
čištění pasti SIGINT
# Zbytek vašeho skriptu
echo Běží…
spát 10
echo Hotovo.

Zpracování signálů je důležité pro to, aby byly skripty robustní a aby bylo zajištěno, že zvládnou neočekávaná přerušení elegantně. Funkci čištění můžete přizpůsobit tak, aby odpovídala vašim konkrétním potřebám, jako je zavírání souborů, zastavování procesů nebo protokolování informací před ukončením skriptu.

Vysvětlení:

  1. #!/bin/bash: Tento řádek Shebang určuje interpret, který má být použit pro spuštění skriptu.
  2. cleanup() { … }: Definuje funkci s názvem cleanup. Do této funkce můžete zahrnout jakékoli akce, které je třeba provést, když je skript přerušen, jako je zavření souborů, uvolnění prostředků nebo provedení jiných úloh čištění.
  3. trap cleanup SIGINT: Příkaz trap se používá k nastavení obsluhy signálu. V tomto případě určuje, že když je přijat signál SIGINT (Ctrl+C), měla by být provedena funkce čištění.
  4. echo Běží…, spánek 10, echo Dokončeno.: Toto jsou pouze ukázkové příkazy pro simulaci provádění skriptu.

446

19) Vytvořte skript, který zkontroluje a odstraní duplicitní řádky v textovém souboru.

Zde je náš linuxový skript, ve kterém odstraníme duplicitní řádky z textového souboru.

#!/bin/bash
vstupní_soubor=vstup.txt
výstupní_soubor=výstup.txt
sort $input_file | uniq> $output_file
echo Duplicitní řádky byly úspěšně odstraněny.

Vysvětlení:

  1. Skript začíná znakem shebang (#!/bin/bash), který označuje, že skript by měl být interpretován pomocí shellu Bash.
  2. Proměnná input_file je nastavena na název vstupního souboru obsahujícího duplicitní řádky (změňte jej na skutečný název vstupního souboru).
  3. Proměnná output_file je nastavena na název výstupního souboru, ze kterého budou odstraněny duplikáty (změňte jej na požadovaný název výstupního souboru).
  4. Skript používá příkaz sort k řazení řádků ve vstupním souboru. Řazení řádků zajišťuje, že duplicitní řádky jsou seskupeny.
  5. Seřazené řádky jsou pak předány příkazem uniq, který odstraní po sobě jdoucí duplicitní řádky. Výstup tohoto procesu je přesměrován do výstupního souboru.
  6. Po odstranění duplikátů skript vytiskne zprávu o úspěchu.
odstranění duplicitních čar

odstranění duplicitních čar

Zde používáme ` kočka ` pro zobrazení textu uvnitř textového souboru.

20) Napište skript, který vygeneruje bezpečné náhodné heslo.

Zde je náš skript pro vygenerování bezpečného náhodného hesla.

#!/bin/bash
# Funkce pro generování náhodného hesla
vygenerovat_heslo() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Vyvolejte funkci a uložte vygenerované heslo
heslo=$(generate_password)
echo Vygenerované heslo: $password

Poznámka: Uživatel může odpovídajícím způsobem změnit délku hesla nahrazením čísla `12`.

Vysvětlení:

  1. Skript začíná znakem shebang (#!/bin/bash), což znamená, že by měl být interpretován pomocí shellu Bash.
  2. Funkce vygenerovat_heslo je definována pro generování náhodného hesla. Funguje to takto:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 rozdělí filtrovaná náhodná data na řádky o šířce 12 znaků.
    • head -n 1 vybere první řádek, čímž získáme náhodnou sekvenci znaků o délce 12.
  3. Proměnná password je přiřazena výsledku volání funkce vygenerovat_heslo.
  4. Nakonec se vygenerované heslo zobrazí pomocí echo.

448

21) Napište shellový skript, který vypočítá celkovou velikost všech souborů v adresáři.

Zde je shell skript pro výpočet celkové velikosti všech souborů v adresáři.

#!/bin/bash
adresář=/cesta/k/vašemu/adresáři
total_size=$(du -csh $directory | grep total | awk ‘{print }’)
echo Celková velikost souborů v $adresáři: $celková_velikost

Vysvětlení:

concat java řetězec
  1. Skript začíná znakem #!/bin/bash shebang, což znamená, že by měl být interpretován pomocí shellu Bash.
  2. Proměnná adresář je nastavena na cestu k adresáři, pro který chcete vypočítat celkovou velikost souboru. Nahraďte /cesta/k/vašemu/adresáři skutečnou cestou.
  3. Příkaz du se používá k odhadu využití místa v souboru. Použité možnosti jsou:
    • -c: Vytvořte celkový součet.
    • -s: Zobrazí pouze celkovou velikost zadaného adresáře.
    • -h: Velikosti tisku ve formátu čitelném pro člověka (např. KB, MB, GB).
  4. Výstup du je přesměrován do grep total, aby se odfiltroval řádek, který obsahuje celkovou velikost.
  5. awk ‚{print }‘ se používá k extrahování prvního pole (celkové velikosti) z řádku.
  6. Vypočítaná celková velikost je uložena v proměnné total_size.
  7. Nakonec skript zobrazí celkovou velikost pomocí echa.
Celková velikost souborů

Celková velikost souborů

Zde jsme použili ` pwd ` k zobrazení aktuální cesty k adresáři.

22) Vysvětlete rozdíl mezi příkazy if a elif ve skriptování shellu.

Vlastnosti 'Pokud'Staiftement Prohlášení `elif`
Účel Vysvětlete rozdíl mezi příkazy if a elif ve skriptování shellu. Poskytuje alternativní podmínky ke kontrole, když je počáteční podmínka if nepravdivá.
používání Používá se pro počáteční stav. Používá se po počáteční podmínce if ke kontrole dalších podmínek.
počet Bloků Může mít pouze jeden blok if. Může mít více bloků elif, ale pouze jeden jiný blok (volitelné).
Provedení Pokud je podmínka pravdivá, provede blok kódu spojený s příkazem if. Pokud je podmínka nepravdivá, provede se blok else (pokud existuje) (nepovinné). Kontroluje každou podmínku elif v pořadí. Pokud je jedna podmínka elif pravdivá, provede se odpovídající blok kódu a skript ukončí celý podmíněný blok. Pokud není splněna žádná z podmínek elif, provede se blok else (pokud existuje).
Vnořené struktury Lze vnořit do jiných bloků if, elif nebo else. Nelze vnořit do jiného bloku elif, ale lze jej použít uvnitř bloku if nebo else.

Pojďme to pochopit na příkladu.

#!/bin/bash
číslo = 5
if [ $číslo -gt 10 ]; pak
echo $číslo je větší než 10
jiný
echo $číslo není větší než 10
být
echo ———
if [ $číslo -gt 10 ]; pak
echo $číslo je větší než 10
elif [ $číslo -eq 10 ]; pak
echo $číslo se rovná 10
jiný
echo $číslo je menší než 10
být

Vysvětlení:

V tomto příkladu první blok if kontroluje, zda je číslo větší než 10. Pokud ne, vytiskne zprávu, že číslo není větší než 10. Druhý blok s příkazy elif kontroluje více podmínek postupně, dokud jedna z nich není pravdivá. V tomto případě, protože hodnota čísla je 5, výstup bude:

if_elif rozdíl

if_elif rozdíl

23) Jak používáte smyčku while k opakovanému provádění příkazů?

Smyčka while se používá ve skriptování shellu k opakovanému provádění sady příkazů, pokud je zadaná podmínka pravdivá. Smyčka pokračuje ve vykonávání příkazů, dokud se podmínka nestane nepravdivou.

Zde je základní syntaxe cyklu while:

zatímco [ podmínka ]; dělat
# Příkazy, které mají být provedeny
Hotovo

Vysvětlení:

  1. Cyklus `while` začíná klíčovým slovem `while` následovaným podmínkou uzavřenou v hranatých závorkách `[ ]`.
  2. Tělo smyčky, které obsahuje příkazy, které se mají provést, je uzavřeno mezi klíčovými slovy `do` a `done`.
  3. Smyčka nejprve zkontroluje stav. Pokud je podmínka pravdivá, provedou se příkazy v těle smyčky. Po provedení těla smyčky se podmínka znovu zkontroluje a proces se opakuje, dokud se podmínka nestane nepravdivou.

Příklad: Pokud chceme tisknout čísla od 1 do 5

#!/bin/bash
čítač=1
zatímco [ $counter -le 5 ]; dělat
Číslo echa: $counter
counter=$((counter + 1))
Hotovo

Vysvětlení:

  • Proměnná čítače je nastavena na 1.
  • Cyklus while kontroluje, zda je hodnota čítače menší nebo rovna 5. Dokud je tato podmínka pravdivá, cyklus pokračuje v provádění.
  • Uvnitř smyčky je aktuální hodnota čítače vytištěna pomocí echa.
  • Čítač se zvýší o 1 pomocí výrazu $((počítadlo + 1)).
zatímco smyčka

zatímco smyčka

24) Vytvořte shellový skript, který najde a vypíše všechny prázdné soubory v adresáři.

Shell skript, který můžete použít k nalezení a výpisu všech prázdných souborů v adresáři pomocí příkazů `find` a `stat`:

#!/bin/bash
adresář=″
if [ -z $adresář ]; pak
Použití echa: 0 $
výstup 1
být

pokud [ ! -d $adresář ]; pak
echo Error: '$directory' není platný adresář.
výstup 1
být
echo Prázdné soubory v $adresáři:
najít $adresář -type f -empty

Vysvětlení:

  1. ` #!/bin/bash `: Toto se nazývá shebang a říká operačnímu systému, aby použil shell Bash k interpretaci a spuštění skriptu.
  2. ` adresář=″ `: Tento řádek přiřadí první argument příkazového řádku (označený ) k proměnné ` adresář '.
  3. ` if [ -z $adresář ]; pak `: Tento řádek začíná příkazem if, který kontroluje, zda je ` adresář ` proměnná je prázdná (-z testuje prázdný řetězec).
  4. ` Použití echa: 0 $ `: Pokud je adresář prázdný, vypíše tento řádek zprávu o použití, kde ` 0 $ ` představuje název skriptu.
  5. ` výstup 1 `: Tento řádek ukončí skript s kódem ukončení ` 1 `, což znamená chybu.
  6. ` být `: Tento řádek označuje konec znaku ` -li ` prohlášení.
  7. ` pokud [ ! -d $adresář ]; pak `: Toto spustí další příkaz if, který zkontroluje, zda zadaný adresář existuje (` -d ` testy pro adresář).
  8. ` echo Error: '$directory' není platný adresář. `: Pokud zadaný adresář neexistuje, vypíše tento řádek chybovou zprávu.
  9. ` výstup 1 `: Ukončí skript s kódem ukončení ` 1 '.
  10. ` být `: Označuje konec druhého ` pokud' prohlášení.
  11. ` echo Prázdné soubory v $adresáři: `: Pokud je vše zatím platné, vypíše tento řádek zprávu, že skript vypíše prázdné soubory v zadaném adresáři.
  12. ` najít $adresář -type f -empty `: Tento řádek používá znak ` nalézt ` příkaz k vyhledání prázdných souborů (` -prázdný `) typu běžné soubory (` - typ f `) v zadaném adresáři. Poté vypíše tyto prázdné soubory.
Hledání prázdných souborů

Hledání prázdných souborů

Poznámka : Při spouštění skriptu musíme jako argument zadat adresář. Zde jsme použili cestu aktuálního adresáře home/jayeshkumar/

25) Jaký je účel příkazu read ve skriptování shellu?

Příkaz read ve skriptování shellu umožňuje skriptu požádat vás o informace. Je to jako když vám počítač položí otázku a čeká na vaši odpověď. To je užitečné pro skripty, které vyžadují, abyste něco napsali, nebo když skript potřebuje pracovat s informacemi ze souborů. Příkaz read pomáhá skriptu zastavit se a čekat na to, co napíšete, a pak může tyto informace použít k provádění dalších věcí ve skriptu.

Syntaxe příkazu read:

read variable_name>

Příklad : Pokud chceme převzít jméno jako vstup od uživatele pro jeho tisk.

#!/bin/bash
echo Zadejte prosím své jméno:
číst jméno
echo Ahoj, $name!

453

přečíst jméno

Stručně řečeno, příkaz read se používá k zachycení uživatelského vstupu nebo dat ze souborů v rámci skriptů shellu, díky čemuž jsou skripty interaktivnější a všestrannější.

26) Napište shellový skript, který převede všechny názvy souborů v adresáři na malá písmena.

Zde je skript shellu, který převede všechny názvy souborů v adresáři na malá písmena.

#!/bin/bash
adresář=″
if [ -z $adresář ]; pak
echo Použití:

Pro všechny linuxové distribuce je shell skript jako mávnutím kouzelného proutku, který automatizuje proces, šetří uživatelům čas a zvyšuje produktivitu. Tento výukový program skriptování vás seznámí s více než 25 příklady skriptování.

Než ale přejdeme k tématu shell skriptování příklady, pojďme pochopit skript shellu a skutečné případy použití skriptování shell.

Co je Shell Script?

No, skořápka je a CLI ( interpret příkazového řádku ), který běží v textovém okně, kde mohou uživatelé spravovat a spouštět příkazy shellu. Na druhou stranu, proces psaní sady příkazů, které mají být provedeny v systému Linux. Soubor, který takové instrukce obsahuje, se nazývá bash skript.

Použití skriptů Shell

Níže jsou uvedena některá běžná použití skriptu Shell:

  • Automatizace úloh – Lze jej použít k automatizaci opakujících se úloh, jako jsou pravidelné zálohování a úlohy instalace softwaru.
  • Přizpůsobení – K návrhu prostředí příkazového řádku lze použít skripty shellu a snadno provádět jeho úkoly podle potřeb.
  • Správa souborů – Skripty shellu lze také použít ke správě a manipulaci se soubory a adresáři, jako je přesouvání, kopírování, přejmenování nebo mazání souborů.

Příklady skriptů Shell v Linuxu

1) Co znamená znak shebang (#!) na začátku skriptu shellu?

The shebang (#!) na začátku skriptu označuje interpret, který by měl být použit ke spuštění skriptu. Říká systému, který shell nebo interpret by měl interpretovat příkazy skriptu.

Například: Předpokládejme, že máme pojmenovaný skript myscript.sh napsané v shellu Bash:

Shebang

Shebang

V tomto příkladu:

  • #!/bin/bash na začátku skriptu označuje, že skript by měl být interpretován pomocí prostředí Bash.
  • Příkazy echo se používají k tisku zpráv na terminál.

2) Jak spustíte skript shellu z příkazového řádku?

Chcete-li spustit skript shellu z příkazového řádku, musíme provést následující kroky:

  • Ujistěte se, že soubor skriptu má spustitelná oprávnění pomocí příkaz chmod :
chmod +x myscript.sh>
  • Spusťte skript pomocí jeho názvu souboru:
./myscript.sh>

Zde musíte vyměnit myscript.sh s vaším názvem skriptu.

3) Napište shellový skript, který vytiskne techcodeview.com do terminálu.

Vytvořte název skriptu `myscript.sh` (používáme ` protože ` editor, můžete si vybrat libovolný editor)

vim myscript.sh>

#!/bin/bash
# Tento skript vytiskne techcodeview.com do terminálu
echo techcodeview.com

tisknout jméno

tisknout jméno

Náš skript uděláme spustitelným pomocí `chmod +x`, poté provedeme pomocí `./myscipt.sh` a získáme požadovaný výstup techcodeview.com.

4) Vysvětlete účel příkazu echo ve skriptování shellu.

The příkaz echo slouží k zobrazení textu nebo proměnných na terminálu. Běžně se používá pro tisk zpráv, hodnot proměnných a generování výstupu programu.

434

příkaz echo

V tomto příkladu jsme spustili `echo` na terminálu přímo, protože to funguje stejně uvnitř skriptu shellu.

5) Jak můžete přiřadit hodnotu proměnné v shell skriptu?

Proměnným se přiřazují hodnoty pomocí operátoru přiřazení =.

Například:

#!/bin/bash
# Přiřazení hodnoty proměnné
jméno=Jayesh
věk=21
echo $jméno $věk

Vysvětlení:

  • Název proměnné má přiřazenou hodnotu Jayesh.
  • Proměnná věk má přiřazenu hodnotu 21.
  • echo se používá k tisku a `$jméno` `$věk` se používá k volání hodnoty uložené v proměnných.

435

6) Napište skript shellu, který vezme jméno uživatele jako vstup a pozdraví ho.

Vytvořte název skriptu `example.sh`.

#!/bin/bash
# Zeptejte se uživatele na jeho jméno
echo Jak se jmenuješ?
číst jméno
# Pozdravte uživatele
echo Ahoj, $name! Rád vás poznávám.

Vysvětlení:

  • #!/bin/bash: Toto je linie shebang. Říká systému, aby ke spuštění skriptu použil interpret Bash.
  • # Zeptejte se uživatele na jeho jméno: Toto je komentář. Poskytuje kontext o nadcházejícím kódu. Komentáře jsou interpretem ignorovány.
  • echo What’s your name?: Příkaz echo se používá k zobrazení textu ve dvojitých uvozovkách na terminálu.
  • read name: Příkaz read čeká, až uživatel vloží text, a uloží jej do názvu proměnné.
  • echo Ahoj, $name! Rád vás poznávám.: Tento řádek používá příkaz echo k vytištění uvítací zprávy, která obsahuje hodnotu proměnné name, která byla shromážděna ze vstupu uživatele.

436

7) Jak přidáváte komentáře do skriptu shellu?

Komentáře ve skriptování shellu se používají k poskytnutí vysvětlení nebo kontextu kódu. Tlumočník je ignoruje a jsou určeny pouze pro lidi čtoucí scénář. Komentáře můžete přidávat pomocí symbolu #.

#!/bin/bash
# Toto je komentář vysvětlující účel skriptu
echo gfg

8) Vytvořte shellový skript, který zkontroluje, zda soubor v aktuálním adresáři existuje.

Zde je skript, který zkontroluje, zda v aktuálním adresáři existuje soubor s názvem example.txt:

#!/bin/bash
soubor=example.txt
# Zkontrolujte, zda soubor existuje
if [ -e $soubor ]; pak
echo Soubor existuje: $soubor
jiný
echo Soubor nenalezen: $file
být

Vysvětlení:

  1. #!/bin/bash: Toto je řádek shebang, který určuje interpret (/bin/bash), který má být použit pro spuštění skriptu.
  2. file=example.txt: Tento řádek definuje soubor proměnné a přiřadí jí hodnotu example.txt. Toto můžete nahradit názvem souboru, který chcete zkontrolovat.
  3. if [ -e $soubor ]; then: Tento řádek začíná příkazem if. Podmínka [ -e $soubor ] zkontroluje, zda soubor určený hodnotou proměnné soubor existuje. Parametr -e se používá ke kontrole existence souboru.
  4. echo Soubor existuje: $soubor: Pokud je podmínka pravdivá (tj. soubor existuje), na tomto řádku se vytiskne zpráva, že soubor existuje, spolu s názvem souboru.
  5. else: Pokud je podmínka nepravdivá (tj. soubor neexistuje), skript spustí kód ve větvi else.
  6. echo Soubor nenalezen: $soubor: Tento řádek vytiskne chybovou zprávu indikující, že zadaný soubor nebyl nalezen, spolu s názvem souboru.
  7. fi: Tento řádek označuje konec příkazu if.
Hledání souboru

Hledání souboru

9) Jaký je rozdíl mezi jednoduchými uvozovkami (‘) a dvojitými uvozovkami () ve skriptování shellu?

Jednoduché uvozovky (‘) a dvojité uvozovky () se používají k uzavření řetězců ve skriptování shellu, ale mají odlišné chování:

  • Jednoduché uvozovky: Vše mezi jednoduchými uvozovkami je považováno za doslovný řetězec. Názvy proměnných a většina speciálních znaků nejsou rozšířeny.
  • Dvojité uvozovky: Proměnné a určité speciální znaky v uvozovkách jsou rozšířeny. Obsah podléhá variabilní substituci a substituci příkazů.

#!/bin/bash

abcd=Ahoj
echo ‘$abcd’ # Výstup: $abcd
echo $abcd # Výstup: Dobrý den

10) Jak můžete použít argumenty příkazového řádku ve skriptu shellu?

Argumenty příkazového řádku jsou hodnoty poskytnuté skriptu při jeho spuštění. Lze k nim přistupovat ve skriptu pomocí speciálních proměnných jako $1, $2 atd., kde $1 představuje první argument, $2 představuje druhý argument atd.

Například: Pokud je název našeho skriptu v `example.sh`

#!/bin/bash

echo Název skriptu: $0
echo První argument: $1
echo Druhý argument: $2

Pokud skript spustíme s `.example.sh hello_1 hello_2`, vypíše:

cli argumenty

cli argumenty

11) Jak používáte cyklus for k iteraci seznamu hodnot?

Vytvořte název skriptu `example.sh`.

#!/bin/bash

ovoce = (jablko banán třešeň datum)
pro ovoce v ${fruits[@]}; dělat
echo Aktuální ovoce: $ovoce
Hotovo

Vysvětlení:

Řádek `fruits=` vytváří pole s názvem ovoce se čtyřmi prvky: jablko, banán, třešeň a datum.

  • pro ovoce v ${fruits[@]}; do: Tento řádek začíná cyklus for. Zde je význam jednotlivých částí:
  • for fruit: Toto deklaruje proměnnou smyčky s názvem ovoce. V každé iteraci cyklu bude ovoce uchovávat hodnotu aktuálního prvku z pole ovoce.
  • ${fruits[@]}: Toto je rozšíření pole, které přebírá všechny prvky z pole ovoce. Syntaxe ${…} zajišťuje, že každý prvek je považován za samostatnou položku.
  • do: Toto klíčové slovo označuje začátek těla smyčky.
  • echo Aktuální ovoce: $ovoce: Tento řádek uvnitř smyčky používá příkaz echo k zobrazení aktuální hodnoty proměnné ovoce smyčky. Pro každé ovoce v poli vytiskne zprávu jako Aktuální ovoce: jablko.
  • hotovo: Toto klíčové slovo označuje konec těla smyčky. Oznámí skriptu, že smyčka skončila.
pro smyčku

pro smyčku

12) Napište shellový skript, který vypočítá součet celých čísel od 1 do N pomocí smyčky.

Vytvořte název skriptu `example.sh`.

#!/bin/bash

echo Zadejte číslo (N):
přečtěte si N
součet=0
for ((i=1; i<=$N; i++)); dělat
suma=$((součet + i))
Hotovo
echo Součet celých čísel od 1 do $N je: $součet

Vysvětlení:
Skript začíná tím, že vás požádá o zadání čísla (N) pomocí read. Toto číslo určí, kolikrát se smyčka spustí.

  1. Proměnná suma je inicializována na 0. Tato proměnná bude sledovat součet celých čísel.
  2. Cyklus for začíná for (( i=1; i<=$N; i++ )). Tato struktura smyčky se používá k opakování sady akcí určitý počet opakování, v tomto případě od 1 do hodnoty N.
  3. Uvnitř smyčky se dějí tyto věci:
    • i=1 nastaví proměnnou smyčky i na 1 na začátku každé iterace.
    • Podmínka smyčky i<=$N kontroluje, zda i je stále menší nebo rovno danému číslu N.
    • Pokud je podmínka pravdivá, tělo smyčky se provede.
    • sum=$((součet + i)) vypočítá novou hodnotu součtu přidáním aktuální hodnoty i. Tím se sečtou celá čísla od 1 do aktuální hodnoty i.
  4. Po každé iteraci i++ zvýší hodnotu i o 1.
  5. Smyčka pokračuje, dokud se podmínka i<=$N nestane nepravdivou (když i bude větší než N).
  6. Jakmile cyklus skončí, skript zobrazí součet celých čísel od 1 do zadaného čísla N.

439

13) Vytvořte skript, který hledá konkrétní slovo v souboru a počítá jeho výskyty.

Vytvořte název skriptu `word_count.sh`

#!/bin/bash

echo Zadejte slovo, které chcete vyhledat:
číst cílové_slovo
echo Zadejte název souboru:
číst název souboru
count=$(grep -o -w $target_word $filename | wc -l)
echo Slovo ‚$target_word‘ se v ‚$filename‘ objeví $countkrát.

Vysvětlení:

  • echo Zadejte slovo, které chcete vyhledat:: Tento řádek zobrazí zprávu s žádostí o zadání slova, které chce v souboru vyhledat.
  • read target_word: Tento řádek čte vstup poskytnutý uživatelem a ukládá jej do proměnné s názvem cílové_slovo.
  • echo Zadejte název souboru:: Na tomto řádku se zobrazí zpráva požadující uživatele, aby zadal název souboru, ve kterém chce hledat.
  • read filename: Tento řádek přečte vstup poskytnutý uživatelem a uloží jej do proměnné s názvem filename.
  • count=$(grep -o -w $cílové_slovo $název_souboru | wc -l): Tento řádek provádí hlavní práci skriptu. Pojďme si to rozebrat dále:
    • grep -o -w $cílové_slovo $název_souboru: Tato část příkazu hledá výskyty cílového_slova v zadaném souboru. Volby -o a -w zajistí, že se počítají pouze shody celých slov.
    • |: Toto je roura, která přebírá výstup předchozího příkazu a posílá jej jako vstup do dalšího příkazu.
    • wc -l: Tato část příkazu používá příkaz wc k počítání počtu řádků na vstupu. Volba -l konkrétně počítá řádky.
    • Celý příkaz vypočítá počet výskytů cílového_slova v souboru a tento počet přiřadí proměnné počet

441

14) Vysvětlete rozdíly mezi standardním výstupem (stdout) a standardní chybou (stderr).

Hlavní rozdíl mezi standardním výstupem (stdout) a standardní chybou (stderr) je následující:

  • Standardní výstup (stdout): Toto je výchozí výstupní proud, kam jde běžný výstup příkazu. Ve výchozím nastavení se zobrazuje na terminálu. Můžete jej přesměrovat do souboru pomocí>.
  • Standardní chyba (stderr): Toto je výstupní proud pro chybové zprávy a varování. Ve výchozím nastavení se také zobrazuje na terminálu. Můžete jej přesměrovat do souboru pomocí 2>.

15) Vysvětlete pojem podmíněné příkazy ve skriptování shellu.

Podmíněné příkazy ve skriptování shellu nám umožňují rozhodovat se a řídit tok našeho skriptu na základě určitých podmínek. Umožňují našemu skriptu provádět různé sady příkazů v závislosti na tom, zda je konkrétní podmínka pravdivá nebo nepravdivá. Primární podmíněné příkazy ve skriptování shellu jsou příkaz if, příkaz elif (volitelný) a příkaz else (nepovinný).

Zde je základní struktura podmíněného příkazu ve skriptování shellu:

if [ podmínka ]; pak
# Příkazy, které se mají provést, pokud je podmínka pravdivá
elif [ další_podmínka ]; pak
# Příkazy k provedení, pokud je other_condition pravdivá (volitelné)
jiný
# Příkazy, které se mají provést, pokud není splněna žádná z podmínek (volitelné)
být

Vysvětlení:

  • [ condition ] = Příkaz, který vyhodnotí podmínku a vrátí pravdivý (0) nebo nepravdivý (nenulový) stav ukončení.
  • then = Je klíčové slovo, které označuje, že následující příkazy budou provedeny, pokud se podmínka vyhodnotí jako pravdivá.
  • elif = (zkratka pro else if) Je to sekce, která nám umožňuje zadat další podmínky ke kontrole.
  • else = je to sekce, která obsahuje příkazy, které budou provedeny, pokud nebude splněna žádná z podmínek.
  • fi = Je to klíčové slovo, které označuje konec podmíněného bloku.

16) Jak čtete řádky ze souboru v shell skriptu?

Na číst řádky ze souboru ve skriptu shellu, můžeme použít různé metody, ale jedním z běžných přístupů je použití cyklu while v kombinaci s příkazem read. Můžeme to udělat takto:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Zkontrolujte, zda soubor existuje
if [ -e $soubor ]; pak
while IFS= read -r řádek; dělat
echo Čtení řádku: $řádek
# Zde přidejte svou logiku zpracování
hotovo <$soubor
jiný
echo Soubor nenalezen: $file
být

Vysvětlení:

  1. #!/bin/bash: Toto je řádek shebang, který určuje interpret (/bin/bash), který má být použit pro spuštění skriptu.
  2. file=/home/jayeshkumar/jayesh.txt: Tento řádek definuje soubor proměnné a přiřazuje úplnou cestu k souboru jayesh.txt v adresáři /home/jayeshkumar. Změňte tuto cestu tak, aby odpovídala skutečné cestě k souboru, který chcete číst.
  3. if [ -e $soubor ]; then: Tento řádek začíná příkazem if. Zkontroluje, zda soubor určený proměnnou $file existuje. Příznak -e kontroluje existenci souboru.
  4. while IFS= read -r řádek; do: Tento řádek spouští cyklus while, který čte řádky ze souboru.
    • IFS=: IFS (Interní oddělovač polí) je nastaven na prázdnou hodnotu, aby se zachovaly mezery na začátku a na konci.
    • read -r řádek: Přečte aktuální řádek ze souboru a uloží jej do proměnné řádek.
  5. echo Čtení řádku: $řádek: Tento řádek vytiskne obsah řádku, který byl přečten ze souboru. Proměnná $line obsahuje obsah aktuálního řádku.
  6. # Zde přidejte svou logiku zpracování: Toto je zástupný komentář, kde můžete přidat svou vlastní logiku pro zpracování každého řádku. Můžete například analyzovat řádek, extrahovat informace nebo provádět konkrétní akce na základě obsahu.
  7. hotovo <$soubor: Označuje konec cyklu while. < $soubor přesměruje obsah souboru, který má být načten smyčkou.
  8. else: Pokud soubor neexistuje (podmínka v příkazu if je nepravdivá), skript spustí kód ve větvi else.
  9. echo Soubor nenalezen: $soubor: Tento řádek vytiskne chybovou zprávu oznamující, že zadaný soubor nebyl nalezen.
  10. fi: Tento řádek označuje konec příkazu if.
čtení souboru

čtení souboru

Zde jsme použili ` pwd ` k získání cesty k aktuálnímu adresáři.

17) Napište do shellového skriptu funkci, která vypočítá faktoriál daného čísla.

Tady je ten skriptvypočítat faktoriáldaného čísla.

#!/bin/bash
# Definujte funkci pro výpočet faktoriálu
vypočítat_faktor() {
num=$1
fakt=1
pro ((i=1; i<=num; i++)); dělat
fakt=$((fakt * i))
Hotovo
echo $fakt
}
# Vyzvěte uživatele, aby zadal číslo
echo Zadejte číslo:
číst input_num
# Zavolejte funkci vypočítej_faktor se vstupním číslem
factorial_result=$(vypočítat_faktor $input_num)
# Zobrazte výsledek faktoriálu
echo Faktorial $input_num je: $factorial_result

Vysvětlení:

  1. Skript začíná řádkem shebang #!/bin/bash, aby se určil interpret.
  2. vypočítat_faktor () je definován jako funkce. Vyžaduje jeden argument, num, což je číslo, pro které je třeba vypočítat faktoriál.
  3. Uvnitř funkce je fakt inicializován na 1. Tato proměnná uloží výsledek faktoriálu.
  4. Cyklus for iteruje od 1 do daného čísla (num). V každé iteraci násobí aktuální hodnotu faktu indexem smyčky i.
  5. Po dokončení cyklu obsahuje proměnná fakt vypočítaný faktoriál.
  6. Skript vyzve uživatele k zadání čísla pomocí read.
  7. Funkce vypočítej_faktor je volána s číslem zadaným uživatelem a výsledek se uloží do proměnné faktoriální_výsledek.
  8. Nakonec skript zobrazí vypočítaný výsledek faktoriálu.
Faktorový

Faktorový

18) Jak zacházíte se signály jako Ctrl+C ve skriptu shellu?

Ve skriptu shellu můžete zpracovávat signály jako Ctrl+C (známé také jako SIGINT) pomocí příkazu trap. Ctrl+C generuje signál SIGINT, když jej uživatel stiskne k přerušení běžícího skriptu nebo programu. Pomocí příkazu trap můžete určit akce, které se mají provést, když je přijat konkrétní signál. Zde je návod, jak zacházet se signály jako Ctrl+C ve skriptu shellu:

#!/bin/bash
cleanup() {
echo Skript byl přerušen. Provádí se úklid…
# Zde přidejte své čisticí akce
výstup 1
}
# Nastavte depeši pro volání funkce čištění při přijetí Ctrl+C (SIGINT).
čištění pasti SIGINT
# Zbytek vašeho skriptu
echo Běží…
spát 10
echo Hotovo.

Zpracování signálů je důležité pro to, aby byly skripty robustní a aby bylo zajištěno, že zvládnou neočekávaná přerušení elegantně. Funkci čištění můžete přizpůsobit tak, aby odpovídala vašim konkrétním potřebám, jako je zavírání souborů, zastavování procesů nebo protokolování informací před ukončením skriptu.

Vysvětlení:

  1. #!/bin/bash: Tento řádek Shebang určuje interpret, který má být použit pro spuštění skriptu.
  2. cleanup() { … }: Definuje funkci s názvem cleanup. Do této funkce můžete zahrnout jakékoli akce, které je třeba provést, když je skript přerušen, jako je zavření souborů, uvolnění prostředků nebo provedení jiných úloh čištění.
  3. trap cleanup SIGINT: Příkaz trap se používá k nastavení obsluhy signálu. V tomto případě určuje, že když je přijat signál SIGINT (Ctrl+C), měla by být provedena funkce čištění.
  4. echo Běží…, spánek 10, echo Dokončeno.: Toto jsou pouze ukázkové příkazy pro simulaci provádění skriptu.

446

19) Vytvořte skript, který zkontroluje a odstraní duplicitní řádky v textovém souboru.

Zde je náš linuxový skript, ve kterém odstraníme duplicitní řádky z textového souboru.

#!/bin/bash
vstupní_soubor=vstup.txt
výstupní_soubor=výstup.txt
sort $input_file | uniq> $output_file
echo Duplicitní řádky byly úspěšně odstraněny.

Vysvětlení:

  1. Skript začíná znakem shebang (#!/bin/bash), který označuje, že skript by měl být interpretován pomocí shellu Bash.
  2. Proměnná input_file je nastavena na název vstupního souboru obsahujícího duplicitní řádky (změňte jej na skutečný název vstupního souboru).
  3. Proměnná output_file je nastavena na název výstupního souboru, ze kterého budou odstraněny duplikáty (změňte jej na požadovaný název výstupního souboru).
  4. Skript používá příkaz sort k řazení řádků ve vstupním souboru. Řazení řádků zajišťuje, že duplicitní řádky jsou seskupeny.
  5. Seřazené řádky jsou pak předány příkazem uniq, který odstraní po sobě jdoucí duplicitní řádky. Výstup tohoto procesu je přesměrován do výstupního souboru.
  6. Po odstranění duplikátů skript vytiskne zprávu o úspěchu.
odstranění duplicitních čar

odstranění duplicitních čar

Zde používáme ` kočka ` pro zobrazení textu uvnitř textového souboru.

20) Napište skript, který vygeneruje bezpečné náhodné heslo.

Zde je náš skript pro vygenerování bezpečného náhodného hesla.

#!/bin/bash
# Funkce pro generování náhodného hesla
vygenerovat_heslo() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Vyvolejte funkci a uložte vygenerované heslo
heslo=$(generate_password)
echo Vygenerované heslo: $password

Poznámka: Uživatel může odpovídajícím způsobem změnit délku hesla nahrazením čísla `12`.

Vysvětlení:

  1. Skript začíná znakem shebang (#!/bin/bash), což znamená, že by měl být interpretován pomocí shellu Bash.
  2. Funkce vygenerovat_heslo je definována pro generování náhodného hesla. Funguje to takto:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 rozdělí filtrovaná náhodná data na řádky o šířce 12 znaků.
    • head -n 1 vybere první řádek, čímž získáme náhodnou sekvenci znaků o délce 12.
  3. Proměnná password je přiřazena výsledku volání funkce vygenerovat_heslo.
  4. Nakonec se vygenerované heslo zobrazí pomocí echo.

448

21) Napište shellový skript, který vypočítá celkovou velikost všech souborů v adresáři.

Zde je shell skript pro výpočet celkové velikosti všech souborů v adresáři.

#!/bin/bash
adresář=/cesta/k/vašemu/adresáři
total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
echo Celková velikost souborů v $adresáři: $celková_velikost

Vysvětlení:

  1. Skript začíná znakem #!/bin/bash shebang, což znamená, že by měl být interpretován pomocí shellu Bash.
  2. Proměnná adresář je nastavena na cestu k adresáři, pro který chcete vypočítat celkovou velikost souboru. Nahraďte /cesta/k/vašemu/adresáři skutečnou cestou.
  3. Příkaz du se používá k odhadu využití místa v souboru. Použité možnosti jsou:
    • -c: Vytvořte celkový součet.
    • -s: Zobrazí pouze celkovou velikost zadaného adresáře.
    • -h: Velikosti tisku ve formátu čitelném pro člověka (např. KB, MB, GB).
  4. Výstup du je přesměrován do grep total, aby se odfiltroval řádek, který obsahuje celkovou velikost.
  5. awk ‚{print $1}‘ se používá k extrahování prvního pole (celkové velikosti) z řádku.
  6. Vypočítaná celková velikost je uložena v proměnné total_size.
  7. Nakonec skript zobrazí celkovou velikost pomocí echa.
Celková velikost souborů

Celková velikost souborů

Zde jsme použili ` pwd ` k zobrazení aktuální cesty k adresáři.

22) Vysvětlete rozdíl mezi příkazy if a elif ve skriptování shellu.

Vlastnosti 'Pokud'Staiftement Prohlášení `elif`
Účel Vysvětlete rozdíl mezi příkazy if a elif ve skriptování shellu. Poskytuje alternativní podmínky ke kontrole, když je počáteční podmínka if nepravdivá.
používání Používá se pro počáteční stav. Používá se po počáteční podmínce if ke kontrole dalších podmínek.
počet Bloků Může mít pouze jeden blok if. Může mít více bloků elif, ale pouze jeden jiný blok (volitelné).
Provedení Pokud je podmínka pravdivá, provede blok kódu spojený s příkazem if. Pokud je podmínka nepravdivá, provede se blok else (pokud existuje) (nepovinné). Kontroluje každou podmínku elif v pořadí. Pokud je jedna podmínka elif pravdivá, provede se odpovídající blok kódu a skript ukončí celý podmíněný blok. Pokud není splněna žádná z podmínek elif, provede se blok else (pokud existuje).
Vnořené struktury Lze vnořit do jiných bloků if, elif nebo else. Nelze vnořit do jiného bloku elif, ale lze jej použít uvnitř bloku if nebo else.

Pojďme to pochopit na příkladu.

#!/bin/bash
číslo = 5
if [ $číslo -gt 10 ]; pak
echo $číslo je větší než 10
jiný
echo $číslo není větší než 10
být
echo ———
if [ $číslo -gt 10 ]; pak
echo $číslo je větší než 10
elif [ $číslo -eq 10 ]; pak
echo $číslo se rovná 10
jiný
echo $číslo je menší než 10
být

Vysvětlení:

V tomto příkladu první blok if kontroluje, zda je číslo větší než 10. Pokud ne, vytiskne zprávu, že číslo není větší než 10. Druhý blok s příkazy elif kontroluje více podmínek postupně, dokud jedna z nich není pravdivá. V tomto případě, protože hodnota čísla je 5, výstup bude:

if_elif rozdíl

if_elif rozdíl

23) Jak používáte smyčku while k opakovanému provádění příkazů?

Smyčka while se používá ve skriptování shellu k opakovanému provádění sady příkazů, pokud je zadaná podmínka pravdivá. Smyčka pokračuje ve vykonávání příkazů, dokud se podmínka nestane nepravdivou.

Zde je základní syntaxe cyklu while:

zatímco [ podmínka ]; dělat
# Příkazy, které mají být provedeny
Hotovo

Vysvětlení:

  1. Cyklus `while` začíná klíčovým slovem `while` následovaným podmínkou uzavřenou v hranatých závorkách `[ ]`.
  2. Tělo smyčky, které obsahuje příkazy, které se mají provést, je uzavřeno mezi klíčovými slovy `do` a `done`.
  3. Smyčka nejprve zkontroluje stav. Pokud je podmínka pravdivá, provedou se příkazy v těle smyčky. Po provedení těla smyčky se podmínka znovu zkontroluje a proces se opakuje, dokud se podmínka nestane nepravdivou.

Příklad: Pokud chceme tisknout čísla od 1 do 5

#!/bin/bash
čítač=1
zatímco [ $counter -le 5 ]; dělat
Číslo echa: $counter
counter=$((counter + 1))
Hotovo

Vysvětlení:

  • Proměnná čítače je nastavena na 1.
  • Cyklus while kontroluje, zda je hodnota čítače menší nebo rovna 5. Dokud je tato podmínka pravdivá, cyklus pokračuje v provádění.
  • Uvnitř smyčky je aktuální hodnota čítače vytištěna pomocí echa.
  • Čítač se zvýší o 1 pomocí výrazu $((počítadlo + 1)).
zatímco smyčka

zatímco smyčka

24) Vytvořte shellový skript, který najde a vypíše všechny prázdné soubory v adresáři.

Shell skript, který můžete použít k nalezení a výpisu všech prázdných souborů v adresáři pomocí příkazů `find` a `stat`:

#!/bin/bash
adresář=$1″
if [ -z $adresář ]; pak
Použití echa: 0 $
výstup 1
být

pokud [ ! -d $adresář ]; pak
echo Error: '$directory' není platný adresář.
výstup 1
být
echo Prázdné soubory v $adresáři:
najít $adresář -type f -empty

Vysvětlení:

  1. ` #!/bin/bash `: Toto se nazývá shebang a říká operačnímu systému, aby použil shell Bash k interpretaci a spuštění skriptu.
  2. ` adresář=$1″ `: Tento řádek přiřadí první argument příkazového řádku (označený $1) k proměnné ` adresář '.
  3. ` if [ -z $adresář ]; pak `: Tento řádek začíná příkazem if, který kontroluje, zda je ` adresář ` proměnná je prázdná (-z testuje prázdný řetězec).
  4. ` Použití echa: 0 $ `: Pokud je adresář prázdný, vypíše tento řádek zprávu o použití, kde ` 0 $ ` představuje název skriptu.
  5. ` výstup 1 `: Tento řádek ukončí skript s kódem ukončení ` 1 `, což znamená chybu.
  6. ` být `: Tento řádek označuje konec znaku ` -li ` prohlášení.
  7. ` pokud [ ! -d $adresář ]; pak `: Toto spustí další příkaz if, který zkontroluje, zda zadaný adresář existuje (` -d ` testy pro adresář).
  8. ` echo Error: '$directory' není platný adresář. `: Pokud zadaný adresář neexistuje, vypíše tento řádek chybovou zprávu.
  9. ` výstup 1 `: Ukončí skript s kódem ukončení ` 1 '.
  10. ` být `: Označuje konec druhého ` pokud' prohlášení.
  11. ` echo Prázdné soubory v $adresáři: `: Pokud je vše zatím platné, vypíše tento řádek zprávu, že skript vypíše prázdné soubory v zadaném adresáři.
  12. ` najít $adresář -type f -empty `: Tento řádek používá znak ` nalézt ` příkaz k vyhledání prázdných souborů (` -prázdný `) typu běžné soubory (` - typ f `) v zadaném adresáři. Poté vypíše tyto prázdné soubory.
Hledání prázdných souborů

Hledání prázdných souborů

Poznámka : Při spouštění skriptu musíme jako argument zadat adresář. Zde jsme použili cestu aktuálního adresáře home/jayeshkumar/

25) Jaký je účel příkazu read ve skriptování shellu?

Příkaz read ve skriptování shellu umožňuje skriptu požádat vás o informace. Je to jako když vám počítač položí otázku a čeká na vaši odpověď. To je užitečné pro skripty, které vyžadují, abyste něco napsali, nebo když skript potřebuje pracovat s informacemi ze souborů. Příkaz read pomáhá skriptu zastavit se a čekat na to, co napíšete, a pak může tyto informace použít k provádění dalších věcí ve skriptu.

Syntaxe příkazu read:

read variable_name>

Příklad : Pokud chceme převzít jméno jako vstup od uživatele pro jeho tisk.

#!/bin/bash
echo Zadejte prosím své jméno:
číst jméno
echo Ahoj, $name!

453

přečíst jméno

Stručně řečeno, příkaz read se používá k zachycení uživatelského vstupu nebo dat ze souborů v rámci skriptů shellu, díky čemuž jsou skripty interaktivnější a všestrannější.

26) Napište shellový skript, který převede všechny názvy souborů v adresáři na malá písmena.

Zde je skript shellu, který převede všechny názvy souborů v adresáři na malá písmena.

#!/bin/bash
adresář=$1″
if [ -z $adresář ]; pak
echo Použití: $0
výstup 1
být

pokud [ ! -d $adresář ]; pak

echo Error: '$directory' není platný adresář.
výstup 1
být

cd $adresář || výstup 1

pro soubor ve formátu *; dělat
if [ -f $soubor ]; pak
newname=$(echo $file | tr ‘A-Z’ ‘a-z’)
[ $file != $newname ] && mv $file $newname
být
Hotovo

Vysvětlení:

  1. #!/bin/bash : Toto je shebang, který určuje, že skript by měl být interpretován pomocí shellu Bash.
  2. adresář=$1″ : Tento řádek přiřadí první argument příkazového řádku adresáři proměnné.
  3. if [ -z $adresář ]; pak : Tento řádek kontroluje, zda je proměnná adresáře prázdná (při spuštění skriptu není zadán žádný argument).
  4. Použití echa: 0 $ : Pokud je adresář prázdný, vytiskne tento řádek zprávu o použití s ​​názvem skriptu ($0).
  5. výstup 1 : Tento řádek ukončí skript s kódem ukončení 1, což znamená, že došlo k chybě.
  6. F i: Označuje konec prvního příkazu if.
  7. pokud [ ! -d $adresář ]; pak : Tento řádek kontroluje, zda zadaný adresář neexistuje (-d testuje adresář).
  8. echo Error: '$directory' není platný adresář. : Pokud zadaný adresář neexistuje, vypíše tento řádek chybovou zprávu.
  9. výstup 1 : Ukončí skript s kódem ukončení 1.
  10. být : Označuje konec druhého příkazu if.
  11. cd $adresář || výstup 1 : Změní aktuální pracovní adresář na určený adresář. Pokud se změna adresáře nezdaří (např. neexistující adresář), skript se ukončí s chybovým kódem.
  12. pro soubor ve formátu *; dělat: pro soubor ve formátu *; dělat: spustí smyčku, která iteruje všechny položky v aktuálním adresáři (* odpovídá všem názvům souborů).
  13. if [ -f $soubor ]; pak : Zkontroluje, zda je aktuální položka iterace smyčky běžný soubor (-f testuje běžný soubor).
  14. newname=$(echo $file | tr ‘A-Z’ ‘a-z’) : Převede aktuální název souboru ($file) na malá písmena pomocí příkazu tr a uloží výsledek do proměnné newname.
  15. [ $file != $newname ] && mv $file $newname : Porovná původní název souboru s novým názvem souboru s malými písmeny. Pokud se liší, přejmenuje soubor pomocí příkazu mv.
  16. být : Označuje konec vnitřního příkazu if.
  17. Hotovo : Označuje konec smyčky.

454

Poznámka : Při spouštění skriptu musíme jako argument zadat adresář. Zde jsme použili cestu aktuálního adresáře home/jayeshkumar/test

27) Jak můžete použít aritmetické operace v shell skriptu?

Aritmetické operace lze provádět v rámci skriptu shellu pomocí různých vestavěných metod. Shell poskytuje mechanismy pro jednoduché aritmetické výpočty pomocí aritmetické expanze jako:

  1. Aritmetické rozšíření ($((…)))
  2. Použití příkazu expr
  3. Pomocí příkazu let

Zde je náš skript Shell vysvětlující všechny tři metody pro aritmetické operace.

#!/bin/bash
číslo1=10
číslo 2=5

#Aritmetické rozšíření ($((…)))

výsledek=$((číslo1 + číslo2))
echo Součet: $výsledek

#Pomocí příkazu expr

součet=$(výraz $num1 + $num2)
echo Součet: $součet

#Pomocí příkazu let

nechť součet = číslo1 + číslo2
echo Součet: $součet

Vysvětlení:

  1. `#!/bin/bash` : Toto je shebang, který určuje, že skript by měl být interpretován pomocí shellu Bash.
  2. `číslo1=10` a ' číslo2=5` : Tyto řádky přiřazují hodnoty 10 a 5 proměnným ` číslo1 ` a ` číslo2 `, resp.
  3. „#Aritmetické rozšíření ($((…))“) : Toto je komentář označující začátek sekce, která demonstruje aritmetické rozšíření.
  4. `výsledek=$((číslo1 + číslo2))` : Tento řádek používá aritmetické rozšíření k výpočtu součtu ` číslo1 ` a ` číslo2 ` a uloží výsledek do ` výsledek ` proměnná.
  5. `echo Sum: $výsledek` : Tento řádek vytiskne vypočítaný součet pomocí hodnoty uložené v ` výsledek ` proměnná.
  6. `#Použití příkazu expr` : Toto je komentář označující začátek sekce, která ukazuje použití ` expr ` příkaz pro aritmetické operace.
  7. `součet=$(výraz $číslo1 + $číslo2)` : Tento řádek používá ` expr ` příkaz k výpočtu součtu ` číslo1 ` a ` číslo2 ` a uloží výsledek do ` součet ` proměnná. Všimněte si, že ' expr ` příkaz vyžaduje mezery kolem operátorů.
  8. `echo Sum: $sum` : Tento řádek vytiskne vypočítaný součet pomocí hodnoty uložené v ` součet ` proměnná.
  9. `#Pomocí příkazu let` : Toto je komentář označující začátek sekce, která ukazuje použití ` nechat ` příkaz pro aritmetické operace.
  10. `nechť součet = číslo1 + číslo2″` : Tento řádek používá ` nechat ` příkaz k výpočtu součtu ` číslo1 ` a ` číslo2 ` a výsledek přiřadí ` součet ` proměnná. ' nechat ` příkaz nevyžaduje mezery kolem operátorů.
  11. `echo Sum: $sum` : Tento řádek vytiskne vypočítaný součet pomocí hodnoty uložené v ` součet ` proměnná.
aritmetický

aritmetický

28) Vytvořte skript, který zkontroluje, zda je síťový hostitel dosažitelný.

Zde je jednoduchý skript shellu, který používá příkaz ping ke kontrole, zda je síťový hostitel dosažitelný:

#!/bin/bash
hostitel = $ 1″
if [ -z $hostitel ]; pak
Použití echa: 0 $
výstup 1
být
ping -c 4 $host

pokud [ $? -ekv 0]; pak
echo $host je dosažitelný.
jiný
echo $host není dosažitelný.
být

Vysvětlení:

  1. Jako argument bere název hostitele nebo IP adresu a kontroluje, zda je argument uveden.
  2. Pokud není zadán žádný argument, zobrazí se zpráva o použití a skončí se.
  3. Používá příkaz ping s volbou -c 4 k odeslání čtyř požadavků ICMP echo na zadaný hostitel.
  4. Po spuštění příkazu ping zkontroluje stav ukončení ($?). Pokud je stav ukončení 0, znamená to, že hostitel je dosažitelný a skript vytiskne zprávu o úspěchu. V opačném případě vytiskne zprávu o selhání.

456

Poznámka : Při spouštění skriptu musíme jako argument zadat název hostitele. Zde jsme použili google.com

29) Napište skript Shell pro nalezení největšího prvku v poli:

Zde je skript shellu k nalezení největšího prvku v poli.

#!/bin/bash
# Deklarujte pole
pole=(3 56 24 89 67)

# Inicializovat proměnnou pro uložení maximální hodnoty, počínaje prvním prvkem

max=${array[0]}

# Iterujte pole

pro číslo v ${array[@]}; dělat

# Porovnejte každý prvek s aktuálním maximem

if ((počet> max)); pak
max=$num
být
Hotovo

# Vytiskněte maximální hodnotu

echo Maximální prvek v poli je: $max

Vysvětlení:

  1. ` #!/bin/bash `: Řádek shebang určuje, že skript by měl být interpretován pomocí prostředí Bash.
  2. ` pole=(3 56 24 89 67) `: Pole je deklarováno a inicializováno hodnotami.
  3. ` max=${array[0]} `: `max` je inicializováno prvním prvkem pole.
  4. ` pro číslo v ${array[@]}; dělat `: Smyčka `for` se používá k iteraci mezi prvky pole.
  5. ` if ((počet> max)); pak `: Příkaz `if` kontroluje, zda je aktuální prvek `num` větší než aktuální maximum `max`.
  6. ` max=$num`: If`num ` je větší než `max`, `max` se aktualizuje o hodnotu num.
  7. ` Hotovo `: Smyčka `for` je uzavřena.
  8. ` echo Maximální prvek v poli je: $max `: Nakonec skript vypíše maximální hodnotu nalezenou v poli.
461

největší počet

30) Napište skript pro výpočet součtu prvků v poli.

#!/bin/bash

# Deklarujte pole

pole=(1 65 22 19 94)

# Inicializujte proměnnou pro uložení součtu

součet=0

# Iterujte pole a přidejte každý prvek k součtu

pro číslo v ${array[@]}; dělat
dopoledne = $ ((dopoledne + dopoledne))
Hotovo

# Vytiskněte součet

echo Součet prvků v poli je: $sum

Vysvětlení:

` #!/bin/bash `: Řádek shebang určuje, že skript by měl být interpretován pomocí prostředí Bash.

` pole=(1 65 22 19 94) `: Pole je deklarováno a inicializováno hodnotami.

` součet=0 `:` součet ` se inicializuje na nulu, aby udržel součet prvků.

` pro číslo v ${array[@]}; dělat `: A` pro ` smyčka se používá k iteraci mezi prvky pole.

` dopoledne = $ ((dopoledne + dopoledne)) `: Uvnitř smyčky každý prvek ` na jednom ` se přidává k ` součet ` proměnná.

` Hotovo `: The` pro ` smyčka je uzavřena.

`echo Součet prvků v poli je: $sum`: Nakonec skript vypíše součet všech prvků v poli.

462

Součet prvků

Zjistěte více o skriptech Shell

Závěr

Všichni geekové víme, že shell skript je velmi užitečný pro zvýšení produktivity práce a také pro úsporu času. Takže v tomto článku jsme se zabývali 30 příkladů velmi užitečných a nejvíce podvodných shellových skriptů . Doufáme, že vám tento kompletní průvodce příkladem skriptování shellu pomůže porozumět všemu o skriptech shellu.




výstup 1
být

pokud [ ! -d $adresář ]; pak

echo Error: '$directory' není platný adresář.
výstup 1
být

cd $adresář || výstup 1

pro soubor ve formátu *; dělat
if [ -f $soubor ]; pak
newname=$(echo $file | tr ‘A-Z’ ‘a-z’)
[ $file != $newname ] && mv $file $newname
být
Hotovo

Vysvětlení:

  1. #!/bin/bash : Toto je shebang, který určuje, že skript by měl být interpretován pomocí shellu Bash.
  2. adresář=″ : Tento řádek přiřadí první argument příkazového řádku adresáři proměnné.
  3. if [ -z $adresář ]; pak : Tento řádek kontroluje, zda je proměnná adresáře prázdná (při spuštění skriptu není zadán žádný argument).
  4. Použití echa: 0 $ : Pokud je adresář prázdný, vytiskne tento řádek zprávu o použití s ​​názvem skriptu (

    Pro všechny linuxové distribuce je shell skript jako mávnutím kouzelného proutku, který automatizuje proces, šetří uživatelům čas a zvyšuje produktivitu. Tento výukový program skriptování vás seznámí s více než 25 příklady skriptování.

    Než ale přejdeme k tématu shell skriptování příklady, pojďme pochopit skript shellu a skutečné případy použití skriptování shell.

    Co je Shell Script?

    No, skořápka je a CLI ( interpret příkazového řádku ), který běží v textovém okně, kde mohou uživatelé spravovat a spouštět příkazy shellu. Na druhou stranu, proces psaní sady příkazů, které mají být provedeny v systému Linux. Soubor, který takové instrukce obsahuje, se nazývá bash skript.

    Použití skriptů Shell

    Níže jsou uvedena některá běžná použití skriptu Shell:

    • Automatizace úloh – Lze jej použít k automatizaci opakujících se úloh, jako jsou pravidelné zálohování a úlohy instalace softwaru.
    • Přizpůsobení – K návrhu prostředí příkazového řádku lze použít skripty shellu a snadno provádět jeho úkoly podle potřeb.
    • Správa souborů – Skripty shellu lze také použít ke správě a manipulaci se soubory a adresáři, jako je přesouvání, kopírování, přejmenování nebo mazání souborů.

    Příklady skriptů Shell v Linuxu

    1) Co znamená znak shebang (#!) na začátku skriptu shellu?

    The shebang (#!) na začátku skriptu označuje interpret, který by měl být použit ke spuštění skriptu. Říká systému, který shell nebo interpret by měl interpretovat příkazy skriptu.

    Například: Předpokládejme, že máme pojmenovaný skript myscript.sh napsané v shellu Bash:

    Shebang

    Shebang

    V tomto příkladu:

    • #!/bin/bash na začátku skriptu označuje, že skript by měl být interpretován pomocí prostředí Bash.
    • Příkazy echo se používají k tisku zpráv na terminál.

    2) Jak spustíte skript shellu z příkazového řádku?

    Chcete-li spustit skript shellu z příkazového řádku, musíme provést následující kroky:

    • Ujistěte se, že soubor skriptu má spustitelná oprávnění pomocí příkaz chmod :
    chmod +x myscript.sh>
    • Spusťte skript pomocí jeho názvu souboru:
    ./myscript.sh>

    Zde musíte vyměnit myscript.sh s vaším názvem skriptu.

    3) Napište shellový skript, který vytiskne techcodeview.com do terminálu.

    Vytvořte název skriptu `myscript.sh` (používáme ` protože ` editor, můžete si vybrat libovolný editor)

    vim myscript.sh>

    #!/bin/bash
    # Tento skript vytiskne techcodeview.com do terminálu
    echo techcodeview.com

    tisknout jméno

    tisknout jméno

    Náš skript uděláme spustitelným pomocí `chmod +x`, poté provedeme pomocí `./myscipt.sh` a získáme požadovaný výstup techcodeview.com.

    4) Vysvětlete účel příkazu echo ve skriptování shellu.

    The příkaz echo slouží k zobrazení textu nebo proměnných na terminálu. Běžně se používá pro tisk zpráv, hodnot proměnných a generování výstupu programu.

    434

    příkaz echo

    V tomto příkladu jsme spustili `echo` na terminálu přímo, protože to funguje stejně uvnitř skriptu shellu.

    5) Jak můžete přiřadit hodnotu proměnné v shell skriptu?

    Proměnným se přiřazují hodnoty pomocí operátoru přiřazení =.

    Například:

    #!/bin/bash
    # Přiřazení hodnoty proměnné
    jméno=Jayesh
    věk=21
    echo $jméno $věk

    Vysvětlení:

    • Název proměnné má přiřazenou hodnotu Jayesh.
    • Proměnná věk má přiřazenu hodnotu 21.
    • echo se používá k tisku a `$jméno` `$věk` se používá k volání hodnoty uložené v proměnných.

    435

    6) Napište skript shellu, který vezme jméno uživatele jako vstup a pozdraví ho.

    Vytvořte název skriptu `example.sh`.

    #!/bin/bash
    # Zeptejte se uživatele na jeho jméno
    echo Jak se jmenuješ?
    číst jméno
    # Pozdravte uživatele
    echo Ahoj, $name! Rád vás poznávám.

    Vysvětlení:

    • #!/bin/bash: Toto je linie shebang. Říká systému, aby ke spuštění skriptu použil interpret Bash.
    • # Zeptejte se uživatele na jeho jméno: Toto je komentář. Poskytuje kontext o nadcházejícím kódu. Komentáře jsou interpretem ignorovány.
    • echo What’s your name?: Příkaz echo se používá k zobrazení textu ve dvojitých uvozovkách na terminálu.
    • read name: Příkaz read čeká, až uživatel vloží text, a uloží jej do názvu proměnné.
    • echo Ahoj, $name! Rád vás poznávám.: Tento řádek používá příkaz echo k vytištění uvítací zprávy, která obsahuje hodnotu proměnné name, která byla shromážděna ze vstupu uživatele.

    436

    7) Jak přidáváte komentáře do skriptu shellu?

    Komentáře ve skriptování shellu se používají k poskytnutí vysvětlení nebo kontextu kódu. Tlumočník je ignoruje a jsou určeny pouze pro lidi čtoucí scénář. Komentáře můžete přidávat pomocí symbolu #.

    #!/bin/bash
    # Toto je komentář vysvětlující účel skriptu
    echo gfg

    8) Vytvořte shellový skript, který zkontroluje, zda soubor v aktuálním adresáři existuje.

    Zde je skript, který zkontroluje, zda v aktuálním adresáři existuje soubor s názvem example.txt:

    #!/bin/bash
    soubor=example.txt
    # Zkontrolujte, zda soubor existuje
    if [ -e $soubor ]; pak
    echo Soubor existuje: $soubor
    jiný
    echo Soubor nenalezen: $file
    být

    Vysvětlení:

    1. #!/bin/bash: Toto je řádek shebang, který určuje interpret (/bin/bash), který má být použit pro spuštění skriptu.
    2. file=example.txt: Tento řádek definuje soubor proměnné a přiřadí jí hodnotu example.txt. Toto můžete nahradit názvem souboru, který chcete zkontrolovat.
    3. if [ -e $soubor ]; then: Tento řádek začíná příkazem if. Podmínka [ -e $soubor ] zkontroluje, zda soubor určený hodnotou proměnné soubor existuje. Parametr -e se používá ke kontrole existence souboru.
    4. echo Soubor existuje: $soubor: Pokud je podmínka pravdivá (tj. soubor existuje), na tomto řádku se vytiskne zpráva, že soubor existuje, spolu s názvem souboru.
    5. else: Pokud je podmínka nepravdivá (tj. soubor neexistuje), skript spustí kód ve větvi else.
    6. echo Soubor nenalezen: $soubor: Tento řádek vytiskne chybovou zprávu indikující, že zadaný soubor nebyl nalezen, spolu s názvem souboru.
    7. fi: Tento řádek označuje konec příkazu if.
    Hledání souboru

    Hledání souboru

    9) Jaký je rozdíl mezi jednoduchými uvozovkami (‘) a dvojitými uvozovkami () ve skriptování shellu?

    Jednoduché uvozovky (‘) a dvojité uvozovky () se používají k uzavření řetězců ve skriptování shellu, ale mají odlišné chování:

    • Jednoduché uvozovky: Vše mezi jednoduchými uvozovkami je považováno za doslovný řetězec. Názvy proměnných a většina speciálních znaků nejsou rozšířeny.
    • Dvojité uvozovky: Proměnné a určité speciální znaky v uvozovkách jsou rozšířeny. Obsah podléhá variabilní substituci a substituci příkazů.

    #!/bin/bash

    abcd=Ahoj
    echo ‘$abcd’ # Výstup: $abcd
    echo $abcd # Výstup: Dobrý den

    10) Jak můžete použít argumenty příkazového řádku ve skriptu shellu?

    Argumenty příkazového řádku jsou hodnoty poskytnuté skriptu při jeho spuštění. Lze k nim přistupovat ve skriptu pomocí speciálních proměnných jako $1, $2 atd., kde $1 představuje první argument, $2 představuje druhý argument atd.

    Například: Pokud je název našeho skriptu v `example.sh`

    #!/bin/bash

    echo Název skriptu: $0
    echo První argument: $1
    echo Druhý argument: $2

    Pokud skript spustíme s `.example.sh hello_1 hello_2`, vypíše:

    cli argumenty

    cli argumenty

    11) Jak používáte cyklus for k iteraci seznamu hodnot?

    Vytvořte název skriptu `example.sh`.

    #!/bin/bash

    ovoce = (jablko banán třešeň datum)
    pro ovoce v ${fruits[@]}; dělat
    echo Aktuální ovoce: $ovoce
    Hotovo

    Vysvětlení:

    Řádek `fruits=` vytváří pole s názvem ovoce se čtyřmi prvky: jablko, banán, třešeň a datum.

    • pro ovoce v ${fruits[@]}; do: Tento řádek začíná cyklus for. Zde je význam jednotlivých částí:
    • for fruit: Toto deklaruje proměnnou smyčky s názvem ovoce. V každé iteraci cyklu bude ovoce uchovávat hodnotu aktuálního prvku z pole ovoce.
    • ${fruits[@]}: Toto je rozšíření pole, které přebírá všechny prvky z pole ovoce. Syntaxe ${…} zajišťuje, že každý prvek je považován za samostatnou položku.
    • do: Toto klíčové slovo označuje začátek těla smyčky.
    • echo Aktuální ovoce: $ovoce: Tento řádek uvnitř smyčky používá příkaz echo k zobrazení aktuální hodnoty proměnné ovoce smyčky. Pro každé ovoce v poli vytiskne zprávu jako Aktuální ovoce: jablko.
    • hotovo: Toto klíčové slovo označuje konec těla smyčky. Oznámí skriptu, že smyčka skončila.
    pro smyčku

    pro smyčku

    12) Napište shellový skript, který vypočítá součet celých čísel od 1 do N pomocí smyčky.

    Vytvořte název skriptu `example.sh`.

    #!/bin/bash

    echo Zadejte číslo (N):
    přečtěte si N
    součet=0
    for ((i=1; i<=$N; i++)); dělat
    suma=$((součet + i))
    Hotovo
    echo Součet celých čísel od 1 do $N je: $součet

    Vysvětlení:
    Skript začíná tím, že vás požádá o zadání čísla (N) pomocí read. Toto číslo určí, kolikrát se smyčka spustí.

    1. Proměnná suma je inicializována na 0. Tato proměnná bude sledovat součet celých čísel.
    2. Cyklus for začíná for (( i=1; i<=$N; i++ )). Tato struktura smyčky se používá k opakování sady akcí určitý počet opakování, v tomto případě od 1 do hodnoty N.
    3. Uvnitř smyčky se dějí tyto věci:
      • i=1 nastaví proměnnou smyčky i na 1 na začátku každé iterace.
      • Podmínka smyčky i<=$N kontroluje, zda i je stále menší nebo rovno danému číslu N.
      • Pokud je podmínka pravdivá, tělo smyčky se provede.
      • sum=$((součet + i)) vypočítá novou hodnotu součtu přidáním aktuální hodnoty i. Tím se sečtou celá čísla od 1 do aktuální hodnoty i.
    4. Po každé iteraci i++ zvýší hodnotu i o 1.
    5. Smyčka pokračuje, dokud se podmínka i<=$N nestane nepravdivou (když i bude větší než N).
    6. Jakmile cyklus skončí, skript zobrazí součet celých čísel od 1 do zadaného čísla N.

    439

    13) Vytvořte skript, který hledá konkrétní slovo v souboru a počítá jeho výskyty.

    Vytvořte název skriptu `word_count.sh`

    #!/bin/bash

    echo Zadejte slovo, které chcete vyhledat:
    číst cílové_slovo
    echo Zadejte název souboru:
    číst název souboru
    count=$(grep -o -w $target_word $filename | wc -l)
    echo Slovo ‚$target_word‘ se v ‚$filename‘ objeví $countkrát.

    Vysvětlení:

    • echo Zadejte slovo, které chcete vyhledat:: Tento řádek zobrazí zprávu s žádostí o zadání slova, které chce v souboru vyhledat.
    • read target_word: Tento řádek čte vstup poskytnutý uživatelem a ukládá jej do proměnné s názvem cílové_slovo.
    • echo Zadejte název souboru:: Na tomto řádku se zobrazí zpráva požadující uživatele, aby zadal název souboru, ve kterém chce hledat.
    • read filename: Tento řádek přečte vstup poskytnutý uživatelem a uloží jej do proměnné s názvem filename.
    • count=$(grep -o -w $cílové_slovo $název_souboru | wc -l): Tento řádek provádí hlavní práci skriptu. Pojďme si to rozebrat dále:
      • grep -o -w $cílové_slovo $název_souboru: Tato část příkazu hledá výskyty cílového_slova v zadaném souboru. Volby -o a -w zajistí, že se počítají pouze shody celých slov.
      • |: Toto je roura, která přebírá výstup předchozího příkazu a posílá jej jako vstup do dalšího příkazu.
      • wc -l: Tato část příkazu používá příkaz wc k počítání počtu řádků na vstupu. Volba -l konkrétně počítá řádky.
      • Celý příkaz vypočítá počet výskytů cílového_slova v souboru a tento počet přiřadí proměnné počet

    441

    14) Vysvětlete rozdíly mezi standardním výstupem (stdout) a standardní chybou (stderr).

    Hlavní rozdíl mezi standardním výstupem (stdout) a standardní chybou (stderr) je následující:

    • Standardní výstup (stdout): Toto je výchozí výstupní proud, kam jde běžný výstup příkazu. Ve výchozím nastavení se zobrazuje na terminálu. Můžete jej přesměrovat do souboru pomocí>.
    • Standardní chyba (stderr): Toto je výstupní proud pro chybové zprávy a varování. Ve výchozím nastavení se také zobrazuje na terminálu. Můžete jej přesměrovat do souboru pomocí 2>.

    15) Vysvětlete pojem podmíněné příkazy ve skriptování shellu.

    Podmíněné příkazy ve skriptování shellu nám umožňují rozhodovat se a řídit tok našeho skriptu na základě určitých podmínek. Umožňují našemu skriptu provádět různé sady příkazů v závislosti na tom, zda je konkrétní podmínka pravdivá nebo nepravdivá. Primární podmíněné příkazy ve skriptování shellu jsou příkaz if, příkaz elif (volitelný) a příkaz else (nepovinný).

    Zde je základní struktura podmíněného příkazu ve skriptování shellu:

    if [ podmínka ]; pak
    # Příkazy, které se mají provést, pokud je podmínka pravdivá
    elif [ další_podmínka ]; pak
    # Příkazy k provedení, pokud je other_condition pravdivá (volitelné)
    jiný
    # Příkazy, které se mají provést, pokud není splněna žádná z podmínek (volitelné)
    být

    Vysvětlení:

    • [ condition ] = Příkaz, který vyhodnotí podmínku a vrátí pravdivý (0) nebo nepravdivý (nenulový) stav ukončení.
    • then = Je klíčové slovo, které označuje, že následující příkazy budou provedeny, pokud se podmínka vyhodnotí jako pravdivá.
    • elif = (zkratka pro else if) Je to sekce, která nám umožňuje zadat další podmínky ke kontrole.
    • else = je to sekce, která obsahuje příkazy, které budou provedeny, pokud nebude splněna žádná z podmínek.
    • fi = Je to klíčové slovo, které označuje konec podmíněného bloku.

    16) Jak čtete řádky ze souboru v shell skriptu?

    Na číst řádky ze souboru ve skriptu shellu, můžeme použít různé metody, ale jedním z běžných přístupů je použití cyklu while v kombinaci s příkazem read. Můžeme to udělat takto:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Zkontrolujte, zda soubor existuje
    if [ -e $soubor ]; pak
    while IFS= read -r řádek; dělat
    echo Čtení řádku: $řádek
    # Zde přidejte svou logiku zpracování
    hotovo <$soubor
    jiný
    echo Soubor nenalezen: $file
    být

    Vysvětlení:

    1. #!/bin/bash: Toto je řádek shebang, který určuje interpret (/bin/bash), který má být použit pro spuštění skriptu.
    2. file=/home/jayeshkumar/jayesh.txt: Tento řádek definuje soubor proměnné a přiřazuje úplnou cestu k souboru jayesh.txt v adresáři /home/jayeshkumar. Změňte tuto cestu tak, aby odpovídala skutečné cestě k souboru, který chcete číst.
    3. if [ -e $soubor ]; then: Tento řádek začíná příkazem if. Zkontroluje, zda soubor určený proměnnou $file existuje. Příznak -e kontroluje existenci souboru.
    4. while IFS= read -r řádek; do: Tento řádek spouští cyklus while, který čte řádky ze souboru.
      • IFS=: IFS (Interní oddělovač polí) je nastaven na prázdnou hodnotu, aby se zachovaly mezery na začátku a na konci.
      • read -r řádek: Přečte aktuální řádek ze souboru a uloží jej do proměnné řádek.
    5. echo Čtení řádku: $řádek: Tento řádek vytiskne obsah řádku, který byl přečten ze souboru. Proměnná $line obsahuje obsah aktuálního řádku.
    6. # Zde přidejte svou logiku zpracování: Toto je zástupný komentář, kde můžete přidat svou vlastní logiku pro zpracování každého řádku. Můžete například analyzovat řádek, extrahovat informace nebo provádět konkrétní akce na základě obsahu.
    7. hotovo <$soubor: Označuje konec cyklu while. < $soubor přesměruje obsah souboru, který má být načten smyčkou.
    8. else: Pokud soubor neexistuje (podmínka v příkazu if je nepravdivá), skript spustí kód ve větvi else.
    9. echo Soubor nenalezen: $soubor: Tento řádek vytiskne chybovou zprávu oznamující, že zadaný soubor nebyl nalezen.
    10. fi: Tento řádek označuje konec příkazu if.
    čtení souboru

    čtení souboru

    Zde jsme použili ` pwd ` k získání cesty k aktuálnímu adresáři.

    17) Napište do shellového skriptu funkci, která vypočítá faktoriál daného čísla.

    Tady je ten skriptvypočítat faktoriáldaného čísla.

    #!/bin/bash
    # Definujte funkci pro výpočet faktoriálu
    vypočítat_faktor() {
    num=$1
    fakt=1
    pro ((i=1; i<=num; i++)); dělat
    fakt=$((fakt * i))
    Hotovo
    echo $fakt
    }
    # Vyzvěte uživatele, aby zadal číslo
    echo Zadejte číslo:
    číst input_num
    # Zavolejte funkci vypočítej_faktor se vstupním číslem
    factorial_result=$(vypočítat_faktor $input_num)
    # Zobrazte výsledek faktoriálu
    echo Faktorial $input_num je: $factorial_result

    Vysvětlení:

    1. Skript začíná řádkem shebang #!/bin/bash, aby se určil interpret.
    2. vypočítat_faktor () je definován jako funkce. Vyžaduje jeden argument, num, což je číslo, pro které je třeba vypočítat faktoriál.
    3. Uvnitř funkce je fakt inicializován na 1. Tato proměnná uloží výsledek faktoriálu.
    4. Cyklus for iteruje od 1 do daného čísla (num). V každé iteraci násobí aktuální hodnotu faktu indexem smyčky i.
    5. Po dokončení cyklu obsahuje proměnná fakt vypočítaný faktoriál.
    6. Skript vyzve uživatele k zadání čísla pomocí read.
    7. Funkce vypočítej_faktor je volána s číslem zadaným uživatelem a výsledek se uloží do proměnné faktoriální_výsledek.
    8. Nakonec skript zobrazí vypočítaný výsledek faktoriálu.
    Faktorový

    Faktorový

    18) Jak zacházíte se signály jako Ctrl+C ve skriptu shellu?

    Ve skriptu shellu můžete zpracovávat signály jako Ctrl+C (známé také jako SIGINT) pomocí příkazu trap. Ctrl+C generuje signál SIGINT, když jej uživatel stiskne k přerušení běžícího skriptu nebo programu. Pomocí příkazu trap můžete určit akce, které se mají provést, když je přijat konkrétní signál. Zde je návod, jak zacházet se signály jako Ctrl+C ve skriptu shellu:

    #!/bin/bash
    cleanup() {
    echo Skript byl přerušen. Provádí se úklid…
    # Zde přidejte své čisticí akce
    výstup 1
    }
    # Nastavte depeši pro volání funkce čištění při přijetí Ctrl+C (SIGINT).
    čištění pasti SIGINT
    # Zbytek vašeho skriptu
    echo Běží…
    spát 10
    echo Hotovo.

    Zpracování signálů je důležité pro to, aby byly skripty robustní a aby bylo zajištěno, že zvládnou neočekávaná přerušení elegantně. Funkci čištění můžete přizpůsobit tak, aby odpovídala vašim konkrétním potřebám, jako je zavírání souborů, zastavování procesů nebo protokolování informací před ukončením skriptu.

    Vysvětlení:

    1. #!/bin/bash: Tento řádek Shebang určuje interpret, který má být použit pro spuštění skriptu.
    2. cleanup() { … }: Definuje funkci s názvem cleanup. Do této funkce můžete zahrnout jakékoli akce, které je třeba provést, když je skript přerušen, jako je zavření souborů, uvolnění prostředků nebo provedení jiných úloh čištění.
    3. trap cleanup SIGINT: Příkaz trap se používá k nastavení obsluhy signálu. V tomto případě určuje, že když je přijat signál SIGINT (Ctrl+C), měla by být provedena funkce čištění.
    4. echo Běží…, spánek 10, echo Dokončeno.: Toto jsou pouze ukázkové příkazy pro simulaci provádění skriptu.

    446

    19) Vytvořte skript, který zkontroluje a odstraní duplicitní řádky v textovém souboru.

    Zde je náš linuxový skript, ve kterém odstraníme duplicitní řádky z textového souboru.

    #!/bin/bash
    vstupní_soubor=vstup.txt
    výstupní_soubor=výstup.txt
    sort $input_file | uniq> $output_file
    echo Duplicitní řádky byly úspěšně odstraněny.

    Vysvětlení:

    1. Skript začíná znakem shebang (#!/bin/bash), který označuje, že skript by měl být interpretován pomocí shellu Bash.
    2. Proměnná input_file je nastavena na název vstupního souboru obsahujícího duplicitní řádky (změňte jej na skutečný název vstupního souboru).
    3. Proměnná output_file je nastavena na název výstupního souboru, ze kterého budou odstraněny duplikáty (změňte jej na požadovaný název výstupního souboru).
    4. Skript používá příkaz sort k řazení řádků ve vstupním souboru. Řazení řádků zajišťuje, že duplicitní řádky jsou seskupeny.
    5. Seřazené řádky jsou pak předány příkazem uniq, který odstraní po sobě jdoucí duplicitní řádky. Výstup tohoto procesu je přesměrován do výstupního souboru.
    6. Po odstranění duplikátů skript vytiskne zprávu o úspěchu.
    odstranění duplicitních čar

    odstranění duplicitních čar

    Zde používáme ` kočka ` pro zobrazení textu uvnitř textového souboru.

    20) Napište skript, který vygeneruje bezpečné náhodné heslo.

    Zde je náš skript pro vygenerování bezpečného náhodného hesla.

    #!/bin/bash
    # Funkce pro generování náhodného hesla
    vygenerovat_heslo() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Vyvolejte funkci a uložte vygenerované heslo
    heslo=$(generate_password)
    echo Vygenerované heslo: $password

    Poznámka: Uživatel může odpovídajícím způsobem změnit délku hesla nahrazením čísla `12`.

    Vysvětlení:

    1. Skript začíná znakem shebang (#!/bin/bash), což znamená, že by měl být interpretován pomocí shellu Bash.
    2. Funkce vygenerovat_heslo je definována pro generování náhodného hesla. Funguje to takto:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 rozdělí filtrovaná náhodná data na řádky o šířce 12 znaků.
      • head -n 1 vybere první řádek, čímž získáme náhodnou sekvenci znaků o délce 12.
    3. Proměnná password je přiřazena výsledku volání funkce vygenerovat_heslo.
    4. Nakonec se vygenerované heslo zobrazí pomocí echo.

    448

    21) Napište shellový skript, který vypočítá celkovou velikost všech souborů v adresáři.

    Zde je shell skript pro výpočet celkové velikosti všech souborů v adresáři.

    #!/bin/bash
    adresář=/cesta/k/vašemu/adresáři
    total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
    echo Celková velikost souborů v $adresáři: $celková_velikost

    Vysvětlení:

    1. Skript začíná znakem #!/bin/bash shebang, což znamená, že by měl být interpretován pomocí shellu Bash.
    2. Proměnná adresář je nastavena na cestu k adresáři, pro který chcete vypočítat celkovou velikost souboru. Nahraďte /cesta/k/vašemu/adresáři skutečnou cestou.
    3. Příkaz du se používá k odhadu využití místa v souboru. Použité možnosti jsou:
      • -c: Vytvořte celkový součet.
      • -s: Zobrazí pouze celkovou velikost zadaného adresáře.
      • -h: Velikosti tisku ve formátu čitelném pro člověka (např. KB, MB, GB).
    4. Výstup du je přesměrován do grep total, aby se odfiltroval řádek, který obsahuje celkovou velikost.
    5. awk ‚{print $1}‘ se používá k extrahování prvního pole (celkové velikosti) z řádku.
    6. Vypočítaná celková velikost je uložena v proměnné total_size.
    7. Nakonec skript zobrazí celkovou velikost pomocí echa.
    Celková velikost souborů

    Celková velikost souborů

    Zde jsme použili ` pwd ` k zobrazení aktuální cesty k adresáři.

    22) Vysvětlete rozdíl mezi příkazy if a elif ve skriptování shellu.

    Vlastnosti 'Pokud'Staiftement Prohlášení `elif`
    Účel Vysvětlete rozdíl mezi příkazy if a elif ve skriptování shellu. Poskytuje alternativní podmínky ke kontrole, když je počáteční podmínka if nepravdivá.
    používání Používá se pro počáteční stav. Používá se po počáteční podmínce if ke kontrole dalších podmínek.
    počet Bloků Může mít pouze jeden blok if. Může mít více bloků elif, ale pouze jeden jiný blok (volitelné).
    Provedení Pokud je podmínka pravdivá, provede blok kódu spojený s příkazem if. Pokud je podmínka nepravdivá, provede se blok else (pokud existuje) (nepovinné). Kontroluje každou podmínku elif v pořadí. Pokud je jedna podmínka elif pravdivá, provede se odpovídající blok kódu a skript ukončí celý podmíněný blok. Pokud není splněna žádná z podmínek elif, provede se blok else (pokud existuje).
    Vnořené struktury Lze vnořit do jiných bloků if, elif nebo else. Nelze vnořit do jiného bloku elif, ale lze jej použít uvnitř bloku if nebo else.

    Pojďme to pochopit na příkladu.

    #!/bin/bash
    číslo = 5
    if [ $číslo -gt 10 ]; pak
    echo $číslo je větší než 10
    jiný
    echo $číslo není větší než 10
    být
    echo ———
    if [ $číslo -gt 10 ]; pak
    echo $číslo je větší než 10
    elif [ $číslo -eq 10 ]; pak
    echo $číslo se rovná 10
    jiný
    echo $číslo je menší než 10
    být

    Vysvětlení:

    V tomto příkladu první blok if kontroluje, zda je číslo větší než 10. Pokud ne, vytiskne zprávu, že číslo není větší než 10. Druhý blok s příkazy elif kontroluje více podmínek postupně, dokud jedna z nich není pravdivá. V tomto případě, protože hodnota čísla je 5, výstup bude:

    if_elif rozdíl

    if_elif rozdíl

    23) Jak používáte smyčku while k opakovanému provádění příkazů?

    Smyčka while se používá ve skriptování shellu k opakovanému provádění sady příkazů, pokud je zadaná podmínka pravdivá. Smyčka pokračuje ve vykonávání příkazů, dokud se podmínka nestane nepravdivou.

    Zde je základní syntaxe cyklu while:

    zatímco [ podmínka ]; dělat
    # Příkazy, které mají být provedeny
    Hotovo

    Vysvětlení:

    1. Cyklus `while` začíná klíčovým slovem `while` následovaným podmínkou uzavřenou v hranatých závorkách `[ ]`.
    2. Tělo smyčky, které obsahuje příkazy, které se mají provést, je uzavřeno mezi klíčovými slovy `do` a `done`.
    3. Smyčka nejprve zkontroluje stav. Pokud je podmínka pravdivá, provedou se příkazy v těle smyčky. Po provedení těla smyčky se podmínka znovu zkontroluje a proces se opakuje, dokud se podmínka nestane nepravdivou.

    Příklad: Pokud chceme tisknout čísla od 1 do 5

    #!/bin/bash
    čítač=1
    zatímco [ $counter -le 5 ]; dělat
    Číslo echa: $counter
    counter=$((counter + 1))
    Hotovo

    Vysvětlení:

    • Proměnná čítače je nastavena na 1.
    • Cyklus while kontroluje, zda je hodnota čítače menší nebo rovna 5. Dokud je tato podmínka pravdivá, cyklus pokračuje v provádění.
    • Uvnitř smyčky je aktuální hodnota čítače vytištěna pomocí echa.
    • Čítač se zvýší o 1 pomocí výrazu $((počítadlo + 1)).
    zatímco smyčka

    zatímco smyčka

    24) Vytvořte shellový skript, který najde a vypíše všechny prázdné soubory v adresáři.

    Shell skript, který můžete použít k nalezení a výpisu všech prázdných souborů v adresáři pomocí příkazů `find` a `stat`:

    #!/bin/bash
    adresář=$1″
    if [ -z $adresář ]; pak
    Použití echa: 0 $
    výstup 1
    být

    pokud [ ! -d $adresář ]; pak
    echo Error: '$directory' není platný adresář.
    výstup 1
    být
    echo Prázdné soubory v $adresáři:
    najít $adresář -type f -empty

    Vysvětlení:

    1. ` #!/bin/bash `: Toto se nazývá shebang a říká operačnímu systému, aby použil shell Bash k interpretaci a spuštění skriptu.
    2. ` adresář=$1″ `: Tento řádek přiřadí první argument příkazového řádku (označený $1) k proměnné ` adresář '.
    3. ` if [ -z $adresář ]; pak `: Tento řádek začíná příkazem if, který kontroluje, zda je ` adresář ` proměnná je prázdná (-z testuje prázdný řetězec).
    4. ` Použití echa: 0 $ `: Pokud je adresář prázdný, vypíše tento řádek zprávu o použití, kde ` 0 $ ` představuje název skriptu.
    5. ` výstup 1 `: Tento řádek ukončí skript s kódem ukončení ` 1 `, což znamená chybu.
    6. ` být `: Tento řádek označuje konec znaku ` -li ` prohlášení.
    7. ` pokud [ ! -d $adresář ]; pak `: Toto spustí další příkaz if, který zkontroluje, zda zadaný adresář existuje (` -d ` testy pro adresář).
    8. ` echo Error: '$directory' není platný adresář. `: Pokud zadaný adresář neexistuje, vypíše tento řádek chybovou zprávu.
    9. ` výstup 1 `: Ukončí skript s kódem ukončení ` 1 '.
    10. ` být `: Označuje konec druhého ` pokud' prohlášení.
    11. ` echo Prázdné soubory v $adresáři: `: Pokud je vše zatím platné, vypíše tento řádek zprávu, že skript vypíše prázdné soubory v zadaném adresáři.
    12. ` najít $adresář -type f -empty `: Tento řádek používá znak ` nalézt ` příkaz k vyhledání prázdných souborů (` -prázdný `) typu běžné soubory (` - typ f `) v zadaném adresáři. Poté vypíše tyto prázdné soubory.
    Hledání prázdných souborů

    Hledání prázdných souborů

    Poznámka : Při spouštění skriptu musíme jako argument zadat adresář. Zde jsme použili cestu aktuálního adresáře home/jayeshkumar/

    25) Jaký je účel příkazu read ve skriptování shellu?

    Příkaz read ve skriptování shellu umožňuje skriptu požádat vás o informace. Je to jako když vám počítač položí otázku a čeká na vaši odpověď. To je užitečné pro skripty, které vyžadují, abyste něco napsali, nebo když skript potřebuje pracovat s informacemi ze souborů. Příkaz read pomáhá skriptu zastavit se a čekat na to, co napíšete, a pak může tyto informace použít k provádění dalších věcí ve skriptu.

    Syntaxe příkazu read:

    read variable_name>

    Příklad : Pokud chceme převzít jméno jako vstup od uživatele pro jeho tisk.

    #!/bin/bash
    echo Zadejte prosím své jméno:
    číst jméno
    echo Ahoj, $name!

    453

    přečíst jméno

    Stručně řečeno, příkaz read se používá k zachycení uživatelského vstupu nebo dat ze souborů v rámci skriptů shellu, díky čemuž jsou skripty interaktivnější a všestrannější.

    26) Napište shellový skript, který převede všechny názvy souborů v adresáři na malá písmena.

    Zde je skript shellu, který převede všechny názvy souborů v adresáři na malá písmena.

    #!/bin/bash
    adresář=$1″
    if [ -z $adresář ]; pak
    echo Použití: $0
    výstup 1
    být

    pokud [ ! -d $adresář ]; pak

    echo Error: '$directory' není platný adresář.
    výstup 1
    být

    cd $adresář || výstup 1

    pro soubor ve formátu *; dělat
    if [ -f $soubor ]; pak
    newname=$(echo $file | tr ‘A-Z’ ‘a-z’)
    [ $file != $newname ] && mv $file $newname
    být
    Hotovo

    Vysvětlení:

    1. #!/bin/bash : Toto je shebang, který určuje, že skript by měl být interpretován pomocí shellu Bash.
    2. adresář=$1″ : Tento řádek přiřadí první argument příkazového řádku adresáři proměnné.
    3. if [ -z $adresář ]; pak : Tento řádek kontroluje, zda je proměnná adresáře prázdná (při spuštění skriptu není zadán žádný argument).
    4. Použití echa: 0 $ : Pokud je adresář prázdný, vytiskne tento řádek zprávu o použití s ​​názvem skriptu ($0).
    5. výstup 1 : Tento řádek ukončí skript s kódem ukončení 1, což znamená, že došlo k chybě.
    6. F i: Označuje konec prvního příkazu if.
    7. pokud [ ! -d $adresář ]; pak : Tento řádek kontroluje, zda zadaný adresář neexistuje (-d testuje adresář).
    8. echo Error: '$directory' není platný adresář. : Pokud zadaný adresář neexistuje, vypíše tento řádek chybovou zprávu.
    9. výstup 1 : Ukončí skript s kódem ukončení 1.
    10. být : Označuje konec druhého příkazu if.
    11. cd $adresář || výstup 1 : Změní aktuální pracovní adresář na určený adresář. Pokud se změna adresáře nezdaří (např. neexistující adresář), skript se ukončí s chybovým kódem.
    12. pro soubor ve formátu *; dělat: pro soubor ve formátu *; dělat: spustí smyčku, která iteruje všechny položky v aktuálním adresáři (* odpovídá všem názvům souborů).
    13. if [ -f $soubor ]; pak : Zkontroluje, zda je aktuální položka iterace smyčky běžný soubor (-f testuje běžný soubor).
    14. newname=$(echo $file | tr ‘A-Z’ ‘a-z’) : Převede aktuální název souboru ($file) na malá písmena pomocí příkazu tr a uloží výsledek do proměnné newname.
    15. [ $file != $newname ] && mv $file $newname : Porovná původní název souboru s novým názvem souboru s malými písmeny. Pokud se liší, přejmenuje soubor pomocí příkazu mv.
    16. být : Označuje konec vnitřního příkazu if.
    17. Hotovo : Označuje konec smyčky.

    454

    Poznámka : Při spouštění skriptu musíme jako argument zadat adresář. Zde jsme použili cestu aktuálního adresáře home/jayeshkumar/test

    27) Jak můžete použít aritmetické operace v shell skriptu?

    Aritmetické operace lze provádět v rámci skriptu shellu pomocí různých vestavěných metod. Shell poskytuje mechanismy pro jednoduché aritmetické výpočty pomocí aritmetické expanze jako:

    1. Aritmetické rozšíření ($((…)))
    2. Použití příkazu expr
    3. Pomocí příkazu let

    Zde je náš skript Shell vysvětlující všechny tři metody pro aritmetické operace.

    #!/bin/bash
    číslo1=10
    číslo 2=5

    #Aritmetické rozšíření ($((…)))

    výsledek=$((číslo1 + číslo2))
    echo Součet: $výsledek

    #Pomocí příkazu expr

    součet=$(výraz $num1 + $num2)
    echo Součet: $součet

    #Pomocí příkazu let

    nechť součet = číslo1 + číslo2
    echo Součet: $součet

    Vysvětlení:

    1. `#!/bin/bash` : Toto je shebang, který určuje, že skript by měl být interpretován pomocí shellu Bash.
    2. `číslo1=10` a ' číslo2=5` : Tyto řádky přiřazují hodnoty 10 a 5 proměnným ` číslo1 ` a ` číslo2 `, resp.
    3. „#Aritmetické rozšíření ($((…))“) : Toto je komentář označující začátek sekce, která demonstruje aritmetické rozšíření.
    4. `výsledek=$((číslo1 + číslo2))` : Tento řádek používá aritmetické rozšíření k výpočtu součtu ` číslo1 ` a ` číslo2 ` a uloží výsledek do ` výsledek ` proměnná.
    5. `echo Sum: $výsledek` : Tento řádek vytiskne vypočítaný součet pomocí hodnoty uložené v ` výsledek ` proměnná.
    6. `#Použití příkazu expr` : Toto je komentář označující začátek sekce, která ukazuje použití ` expr ` příkaz pro aritmetické operace.
    7. `součet=$(výraz $číslo1 + $číslo2)` : Tento řádek používá ` expr ` příkaz k výpočtu součtu ` číslo1 ` a ` číslo2 ` a uloží výsledek do ` součet ` proměnná. Všimněte si, že ' expr ` příkaz vyžaduje mezery kolem operátorů.
    8. `echo Sum: $sum` : Tento řádek vytiskne vypočítaný součet pomocí hodnoty uložené v ` součet ` proměnná.
    9. `#Pomocí příkazu let` : Toto je komentář označující začátek sekce, která ukazuje použití ` nechat ` příkaz pro aritmetické operace.
    10. `nechť součet = číslo1 + číslo2″` : Tento řádek používá ` nechat ` příkaz k výpočtu součtu ` číslo1 ` a ` číslo2 ` a výsledek přiřadí ` součet ` proměnná. ' nechat ` příkaz nevyžaduje mezery kolem operátorů.
    11. `echo Sum: $sum` : Tento řádek vytiskne vypočítaný součet pomocí hodnoty uložené v ` součet ` proměnná.
    aritmetický

    aritmetický

    28) Vytvořte skript, který zkontroluje, zda je síťový hostitel dosažitelný.

    Zde je jednoduchý skript shellu, který používá příkaz ping ke kontrole, zda je síťový hostitel dosažitelný:

    #!/bin/bash
    hostitel = $ 1″
    if [ -z $hostitel ]; pak
    Použití echa: 0 $
    výstup 1
    být
    ping -c 4 $host

    pokud [ $? -ekv 0]; pak
    echo $host je dosažitelný.
    jiný
    echo $host není dosažitelný.
    být

    Vysvětlení:

    1. Jako argument bere název hostitele nebo IP adresu a kontroluje, zda je argument uveden.
    2. Pokud není zadán žádný argument, zobrazí se zpráva o použití a skončí se.
    3. Používá příkaz ping s volbou -c 4 k odeslání čtyř požadavků ICMP echo na zadaný hostitel.
    4. Po spuštění příkazu ping zkontroluje stav ukončení ($?). Pokud je stav ukončení 0, znamená to, že hostitel je dosažitelný a skript vytiskne zprávu o úspěchu. V opačném případě vytiskne zprávu o selhání.

    456

    Poznámka : Při spouštění skriptu musíme jako argument zadat název hostitele. Zde jsme použili google.com

    29) Napište skript Shell pro nalezení největšího prvku v poli:

    Zde je skript shellu k nalezení největšího prvku v poli.

    #!/bin/bash
    # Deklarujte pole
    pole=(3 56 24 89 67)

    # Inicializovat proměnnou pro uložení maximální hodnoty, počínaje prvním prvkem

    max=${array[0]}

    # Iterujte pole

    pro číslo v ${array[@]}; dělat

    # Porovnejte každý prvek s aktuálním maximem

    if ((počet> max)); pak
    max=$num
    být
    Hotovo

    # Vytiskněte maximální hodnotu

    echo Maximální prvek v poli je: $max

    Vysvětlení:

    1. ` #!/bin/bash `: Řádek shebang určuje, že skript by měl být interpretován pomocí prostředí Bash.
    2. ` pole=(3 56 24 89 67) `: Pole je deklarováno a inicializováno hodnotami.
    3. ` max=${array[0]} `: `max` je inicializováno prvním prvkem pole.
    4. ` pro číslo v ${array[@]}; dělat `: Smyčka `for` se používá k iteraci mezi prvky pole.
    5. ` if ((počet> max)); pak `: Příkaz `if` kontroluje, zda je aktuální prvek `num` větší než aktuální maximum `max`.
    6. ` max=$num`: If`num ` je větší než `max`, `max` se aktualizuje o hodnotu num.
    7. ` Hotovo `: Smyčka `for` je uzavřena.
    8. ` echo Maximální prvek v poli je: $max `: Nakonec skript vypíše maximální hodnotu nalezenou v poli.
    461

    největší počet

    30) Napište skript pro výpočet součtu prvků v poli.

    #!/bin/bash

    # Deklarujte pole

    pole=(1 65 22 19 94)

    # Inicializujte proměnnou pro uložení součtu

    součet=0

    # Iterujte pole a přidejte každý prvek k součtu

    pro číslo v ${array[@]}; dělat
    dopoledne = $ ((dopoledne + dopoledne))
    Hotovo

    # Vytiskněte součet

    echo Součet prvků v poli je: $sum

    Vysvětlení:

    ` #!/bin/bash `: Řádek shebang určuje, že skript by měl být interpretován pomocí prostředí Bash.

    ` pole=(1 65 22 19 94) `: Pole je deklarováno a inicializováno hodnotami.

    ` součet=0 `:` součet ` se inicializuje na nulu, aby udržel součet prvků.

    ` pro číslo v ${array[@]}; dělat `: A` pro ` smyčka se používá k iteraci mezi prvky pole.

    ` dopoledne = $ ((dopoledne + dopoledne)) `: Uvnitř smyčky každý prvek ` na jednom ` se přidává k ` součet ` proměnná.

    ` Hotovo `: The` pro ` smyčka je uzavřena.

    `echo Součet prvků v poli je: $sum`: Nakonec skript vypíše součet všech prvků v poli.

    462

    Součet prvků

    Zjistěte více o skriptech Shell

    Závěr

    Všichni geekové víme, že shell skript je velmi užitečný pro zvýšení produktivity práce a také pro úsporu času. Takže v tomto článku jsme se zabývali 30 příkladů velmi užitečných a nejvíce podvodných shellových skriptů . Doufáme, že vám tento kompletní průvodce příkladem skriptování shellu pomůže porozumět všemu o skriptech shellu.



    ).
  5. výstup 1 : Tento řádek ukončí skript s kódem ukončení 1, což znamená, že došlo k chybě.
  6. F i: Označuje konec prvního příkazu if.
  7. pokud [ ! -d $adresář ]; pak : Tento řádek kontroluje, zda zadaný adresář neexistuje (-d testuje adresář).
  8. echo Error: '$directory' není platný adresář. : Pokud zadaný adresář neexistuje, vypíše tento řádek chybovou zprávu.
  9. výstup 1 : Ukončí skript s kódem ukončení 1.
  10. být : Označuje konec druhého příkazu if.
  11. cd $adresář || výstup 1 : Změní aktuální pracovní adresář na určený adresář. Pokud se změna adresáře nezdaří (např. neexistující adresář), skript se ukončí s chybovým kódem.
  12. pro soubor ve formátu *; dělat: pro soubor ve formátu *; dělat: spustí smyčku, která iteruje všechny položky v aktuálním adresáři (* odpovídá všem názvům souborů).
  13. if [ -f $soubor ]; pak : Zkontroluje, zda je aktuální položka iterace smyčky běžný soubor (-f testuje běžný soubor).
  14. newname=$(echo $file | tr ‘A-Z’ ‘a-z’) : Převede aktuální název souboru ($file) na malá písmena pomocí příkazu tr a uloží výsledek do proměnné newname.
  15. [ $file != $newname ] && mv $file $newname : Porovná původní název souboru s novým názvem souboru s malými písmeny. Pokud se liší, přejmenuje soubor pomocí příkazu mv.
  16. být : Označuje konec vnitřního příkazu if.
  17. Hotovo : Označuje konec smyčky.

454

Poznámka : Při spouštění skriptu musíme jako argument zadat adresář. Zde jsme použili cestu aktuálního adresáře home/jayeshkumar/test

27) Jak můžete použít aritmetické operace v shell skriptu?

Aritmetické operace lze provádět v rámci skriptu shellu pomocí různých vestavěných metod. Shell poskytuje mechanismy pro jednoduché aritmetické výpočty pomocí aritmetické expanze jako:

  1. Aritmetické rozšíření ($((…)))
  2. Použití příkazu expr
  3. Pomocí příkazu let

Zde je náš skript Shell vysvětlující všechny tři metody pro aritmetické operace.

#!/bin/bash
číslo1=10
číslo 2=5

#Aritmetické rozšíření ($((…)))

výsledek=$((číslo1 + číslo2))
echo Součet: $výsledek

#Pomocí příkazu expr

součet=$(výraz $num1 + $num2)
echo Součet: $součet

#Pomocí příkazu let

nechť součet = číslo1 + číslo2
echo Součet: $součet

Vysvětlení:

  1. `#!/bin/bash` : Toto je shebang, který určuje, že skript by měl být interpretován pomocí shellu Bash.
  2. `číslo1=10` a ' číslo2=5` : Tyto řádky přiřazují hodnoty 10 a 5 proměnným ` číslo1 ` a ` číslo2 `, resp.
  3. „#Aritmetické rozšíření ($((…))“) : Toto je komentář označující začátek sekce, která demonstruje aritmetické rozšíření.
  4. `výsledek=$((číslo1 + číslo2))` : Tento řádek používá aritmetické rozšíření k výpočtu součtu ` číslo1 ` a ` číslo2 ` a uloží výsledek do ` výsledek ` proměnná.
  5. `echo Sum: $výsledek` : Tento řádek vytiskne vypočítaný součet pomocí hodnoty uložené v ` výsledek ` proměnná.
  6. `#Použití příkazu expr` : Toto je komentář označující začátek sekce, která ukazuje použití ` expr ` příkaz pro aritmetické operace.
  7. `součet=$(výraz $číslo1 + $číslo2)` : Tento řádek používá ` expr ` příkaz k výpočtu součtu ` číslo1 ` a ` číslo2 ` a uloží výsledek do ` součet ` proměnná. Všimněte si, že ' expr ` příkaz vyžaduje mezery kolem operátorů.
  8. `echo Sum: $sum` : Tento řádek vytiskne vypočítaný součet pomocí hodnoty uložené v ` součet ` proměnná.
  9. `#Pomocí příkazu let` : Toto je komentář označující začátek sekce, která ukazuje použití ` nechat ` příkaz pro aritmetické operace.
  10. `nechť součet = číslo1 + číslo2″` : Tento řádek používá ` nechat ` příkaz k výpočtu součtu ` číslo1 ` a ` číslo2 ` a výsledek přiřadí ` součet ` proměnná. ' nechat ` příkaz nevyžaduje mezery kolem operátorů.
  11. `echo Sum: $sum` : Tento řádek vytiskne vypočítaný součet pomocí hodnoty uložené v ` součet ` proměnná.
aritmetický

aritmetický

28) Vytvořte skript, který zkontroluje, zda je síťový hostitel dosažitelný.

Zde je jednoduchý skript shellu, který používá příkaz ping ke kontrole, zda je síťový hostitel dosažitelný:

#!/bin/bash
hostitel = $ 1″
if [ -z $hostitel ]; pak
Použití echa: 0 $
výstup 1
být
ping -c 4 $host

pokud [ $? -ekv 0]; pak
echo $host je dosažitelný.
jiný
echo $host není dosažitelný.
být

Vysvětlení:

  1. Jako argument bere název hostitele nebo IP adresu a kontroluje, zda je argument uveden.
  2. Pokud není zadán žádný argument, zobrazí se zpráva o použití a skončí se.
  3. Používá příkaz ping s volbou -c 4 k odeslání čtyř požadavků ICMP echo na zadaný hostitel.
  4. Po spuštění příkazu ping zkontroluje stav ukončení ($?). Pokud je stav ukončení 0, znamená to, že hostitel je dosažitelný a skript vytiskne zprávu o úspěchu. V opačném případě vytiskne zprávu o selhání.

456

tostring metoda java

Poznámka : Při spouštění skriptu musíme jako argument zadat název hostitele. Zde jsme použili google.com

29) Napište skript Shell pro nalezení největšího prvku v poli:

Zde je skript shellu k nalezení největšího prvku v poli.

#!/bin/bash
# Deklarujte pole
pole=(3 56 24 89 67)

# Inicializovat proměnnou pro uložení maximální hodnoty, počínaje prvním prvkem

max=${array[0]}

# Iterujte pole

pro číslo v ${array[@]}; dělat

# Porovnejte každý prvek s aktuálním maximem

if ((počet> max)); pak
max=$num
být
Hotovo

# Vytiskněte maximální hodnotu

echo Maximální prvek v poli je: $max

Vysvětlení:

  1. ` #!/bin/bash `: Řádek shebang určuje, že skript by měl být interpretován pomocí prostředí Bash.
  2. ` pole=(3 56 24 89 67) `: Pole je deklarováno a inicializováno hodnotami.
  3. ` max=${array[0]} `: `max` je inicializováno prvním prvkem pole.
  4. ` pro číslo v ${array[@]}; dělat `: Smyčka `for` se používá k iteraci mezi prvky pole.
  5. ` if ((počet> max)); pak `: Příkaz `if` kontroluje, zda je aktuální prvek `num` větší než aktuální maximum `max`.
  6. ` max=$num`: If`num ` je větší než `max`, `max` se aktualizuje o hodnotu num.
  7. ` Hotovo `: Smyčka `for` je uzavřena.
  8. ` echo Maximální prvek v poli je: $max `: Nakonec skript vypíše maximální hodnotu nalezenou v poli.
461

největší počet

30) Napište skript pro výpočet součtu prvků v poli.

#!/bin/bash

# Deklarujte pole

pole=(1 65 22 19 94)

# Inicializujte proměnnou pro uložení součtu

součet=0

# Iterujte pole a přidejte každý prvek k součtu

pro číslo v ${array[@]}; dělat
dopoledne = $ ((dopoledne + dopoledne))
Hotovo

# Vytiskněte součet

echo Součet prvků v poli je: $sum

Vysvětlení:

` #!/bin/bash `: Řádek shebang určuje, že skript by měl být interpretován pomocí prostředí Bash.

` pole=(1 65 22 19 94) `: Pole je deklarováno a inicializováno hodnotami.

` součet=0 `:` součet ` se inicializuje na nulu, aby udržel součet prvků.

` pro číslo v ${array[@]}; dělat `: A` pro ` smyčka se používá k iteraci mezi prvky pole.

` dopoledne = $ ((dopoledne + dopoledne)) `: Uvnitř smyčky každý prvek ` na jednom ` se přidává k ` součet ` proměnná.

` Hotovo `: The` pro ` smyčka je uzavřena.

`echo Součet prvků v poli je: $sum`: Nakonec skript vypíše součet všech prvků v poli.

462

Součet prvků

Zjistěte více o skriptech Shell

Závěr

Všichni geekové víme, že shell skript je velmi užitečný pro zvýšení produktivity práce a také pro úsporu času. Takže v tomto článku jsme se zabývali 30 příkladů velmi užitečných a nejvíce podvodných shellových skriptů . Doufáme, že vám tento kompletní průvodce příkladem skriptování shellu pomůže porozumět všemu o skriptech shellu.