GNU/Linux >> Znalost Linux >  >> Linux

Bash Scripting Tutorial pro začátečníky:Co to je, jak to napsat a příklady skriptů

Pokud jste někdy používali operační systém Linux jako většina virtuálních soukromých serverů, možná jste slyšeli o bash. Je to unixový shell, který čte a provádí různé příkazy.

Když potřebujete spustit několik bash příkazů, nemusíte je spouštět ručně jeden po druhém. Místo toho je možné vytvořit soubor skriptu, který obsahuje funkce bash pro spouštění těchto příkazů.

Může to znít složitě, ale když se naučíte jeho základy, pochopíte skriptovací jazyk bash a zjistíte, jak může pomoci vašemu pracovnímu postupu.

Tento článek se bude zabývat procesem skriptování bash. Projdeme si vše od příkazů bash až po spuštění programu bash na linuxovém terminálu.

Co je to Bash?

Bash, zkratka pro Bourne-Again Shell , je unixový shell a interpret příkazového jazyka. Čte příkazy shellu a spolupracuje s operačním systémem, aby je provedl.

Abyste plně porozuměli skriptování bash shell, musíte znát dva pojmy – shell a skriptování .

Shell je makroprocesor, který používá příkazy k interakci s operačním systémem. To znamená, že může získávat, zpracovávat a ukládat informace v počítači.

Mezitím je skriptování proces kompilace příkazů shellu do nového souboru pomocí textového editoru.

Když píšete bash v textovém editoru, kompilujete příkazy bash nebo funkce bash – sada příkazů, které lze volat mnohokrát pouze pomocí názvu funkce. Text se poté uloží jako spustitelný skript bash soubor s příponou .sh rozšíření.

Proč používat skriptování Bash?

Bash skripty vám mohou pomoci s vaším pracovním postupem, protože kompilují mnoho dlouhých příkazů do jediného spustitelného souboru skriptu.

Máte-li například více příkazů, které musíte spouštět v určitém časovém intervalu, můžete kompilovat bash skript místo ručního psaní a spouštění příkazů jeden po druhém. Soubor skriptu musíte spustit pouze tehdy, když je to nutné.

Zde jsou některé další výhody používání bash skriptů:

  • Dobře strukturované příkazy – strukturujte příkazy v sekvenci tak, aby se skript při každém spuštění spustil ve správném pořadí.
  • Automatizace úloh – automatizovat spouštění skriptu v libovolném definovaném čase pomocí časového plánovače cron.
  • Transparentnost – lidé mohou kontrolovat obsah skriptu, protože je v čitelném textovém souboru. Pokud však příkazy spustíte pomocí jiného programu napsaného v jiném programovacím jazyce, jako je C++, budete potřebovat přístup ke zdrojovému kódu.
  • Přenosné – Pokud skript přenesete do jiné distribuce Linuxu, bude stále fungovat za předpokladu, že jsou v daném operačním systému dostupné příkazy shellu.

Seznamte se s příkazy Bash

Bash je k dispozici na téměř všech typech operačních systémů založených na Unixu a nevyžaduje samostatnou instalaci. Budete potřebovat linuxový příkazový řádek, známý také jako linuxový terminál. Je to program, který obsahuje shell a umožňuje vám spouštět bash skripty.

Tento příkaz použijte ke kontrole seznamu dostupných shellů ve vašem operačním systému Unix:

cat /etc/shells

Výstup by měl zobrazovat seznam takto:

/bin/bash
/bin/sh
/bin/tcsh
/bin/csh

Každý bash shell skript musí začínat #! následuje absolutní cesta k interpretu bash. Chcete-li zobrazit cestu, zadejte tento příkaz:

which bash

Měl by vytvořit následující výstup:

/bin/bash

Toto je standardní cesta k interpretru bash na většině operačních systémů Unix. Aby shell věděl, že by měl spouštět příkazy pomocí interpretu bash, spusťte skript tímto řádkem:

#!/bin/bash

Důležité! Pokud chcete spouštět bash skripty na virtuálním privátním serveru, připojte se k němu přes SSH klienta.

Dalším krokem je napsat a zkompilovat příkazy do .sh soubor pomocí textového editoru. Budete potřebovat unixový textový editor, jako je VIM nebo GNU Nano. V tomto tutoriálu použijeme Nano textový editor pro vytvoření souboru zadáním tohoto příkazu:

nano function.sh

Tím se otevře nový soubor .sh soubor, který můžete upravit. Začněte psaním #!/bin/bash následované příkazy bash.

Důležité! Až skončíte s používáním textového editoru Nano, stiskněte Ctrl+X zavřete jej a poté stiskněte Y a Enter pro uložení změn.

Základní příkazy Bash pro váš první skript Bash

Abyste mohli úspěšně vytvořit svůj první bash skript, musíte pochopit základní bash příkazy. Jsou hlavními prvky skriptu a musíte vědět, co dělají a jak je správně napsat.

V Linuxu je spousta bash příkazů. Pro začátek si probereme sedm základních.

1. Komentáře

Komentáře obsahují popis na určitých řádcích ve skriptu. Terminál během provádění neanalyzuje komentáře, takže neovlivní výstup.

Existují dva způsoby, jak přidat komentáře do skriptu. První způsob je zadáním # na začátku jednořádkového komentáře.

#!/bin/bash
#Command below prints a Hello World text
echo “Hello, world!”

Druhým způsobem je použití : následuje . Tato metoda funguje pro víceřádkové komentáře.

#!/bin/bash
read a
: ‘ 
The following commands prints
Hello, world!
‘
echo “Hello, World!”

2. Proměnné

Proměnné jsou symboly, které představují znak, řetězce znaků nebo čísla. Chcete-li použít definované řetězce nebo čísla, stačí zadat název proměnné do příkazového řádku.

Chcete-li přiřadit proměnnou, zadejte název proměnné a hodnotu řetězce jako zde:

testvar=“This is a test variable”

V tomto případě testvar will je název proměnné a Toto je testovací proměnná je hodnota řetězce. Při přiřazování proměnné doporučujeme použít název proměnné, který je snadno zapamatovatelný a představuje její hodnotu.

Chcete-li načíst hodnotu proměnné v příkazovém řádku, použijte $ symbol před názvem proměnné. Podívejte se na příklad níže:

#!/bin/bash
testvar=“This is a test variable”
echo $testvar

Druhý příkazový řádek používá echo vytisknout hodnotu testvar . Výstup tohoto skriptu bude:

This is a test variable

Podívejme se, jak můžete zadat hodnotu řetězce pomocí čtení a přimějte skript porovnat dvě hodnoty řetězce z různých proměnných:

#!/bin/bash
echo “Enter a number” 
read a #The user input in this command line will be stored as variable a
b=50 #The value of variable b
if [[$a -eq $b]]
then
echo “Same number”
else
echo “Different number”
fi

Výstup tohoto skriptu by měl být následující:

Enter a number
20
Different number

Všimněte si, že řádek 3 je hodnota, která se stává proměnnou a .

Skript porovná proměnnou a s hodnotou 20 a proměnnou b s hodnotou 50 . Protože se hodnoty liší, skript vypíše Jiné číslo .

Pokud však uživatel zadá 50 , toto bude výstup:

Enter a number
50
Same number

Tento příklad také používá podmíněné příkazy, které probereme později.

3. příkaz echo

echo je známý příkaz používaný v mnoha programovacích jazycích. Existují různé možnosti, které můžete použít s echo pro tisk výstupu na terminálu.

První a nejběžnější použití echa je výstup standardního textu:

#!/bin/bash
echo “Hello, world!”

Výstupem tohoto příkazu jeHello, World! Ve výchozím nastavení při použití příkazu echo, jako je tento, terminál vloží pod něj nový řádek. Pokud chcete výstup opakovat bez nového řádku, můžete tak učinit pomocí -n .

#!/bin/bash
echo -n “Hello, world!”

Použijte možnost \n pro zavedení zalomení řádku do výstupu. Chcete-li povolit zpětné lomítko (\) , musíte zahrnout -e .

#!/bin/bash
echo -e “Hello, \nworld!”

Výstup tohoto příkazu bude vypadat takto:

Hello,
world!

Možnost \t přidá vodorovný tabulátor:

#!/bin/bash
echo -e “\tHello, world!”

Výstup tohoto příkazu odsadí text doprava:

        Hello, world!

Můžete také kombinovat několik možností. Například zkombinujte \n a \t rozdělit text na řádky a odsadit jej doprava:

#!/bin/bash
echo -e “\n\tHello, \n\tworld!”

Výstup tohoto příkazu bude vypadat takto:

      Hello,
      world!      

4. Funkce

Funkce sestaví sadu příkazů do skupiny. Pokud potřebujete provést příkaz znovu, jednoduše napište funkci místo celé sady příkazů.

Existuje několik způsobů psaní funkcí.

Prvním způsobem je začít názvem funkce a následovat jej se závorkami:

function_name () {
first command
second command
}

Nebo, pokud to chcete napsat na jeden řádek:

function_name () { first command; second command; }

Druhým způsobem zápisu funkce je použití vyhrazeného slova funkce následovaný názvem funkce. To eliminuje potřebu závorek:

function function_name {
first command
second command
}

Tato metoda má také jednořádkovou verzi:

function function_name { first command; second command; }

Můžeme například napsat dvě funkce s více echem příkazy:

#!/bin/bash
hello_world () {
echo “Hello, World!”
echo “This is a test function”
}
print_message () {
echo “Let’s learn bash programming”
echo “Enjoy this tutorial”
}

Všimněte si, že zápis funkcí jako ve výše uvedeném příkladu je pouze definuje a neprovádí obsažené příkazy. Chcete-li provést funkci, zadejte její název do příkazového řádku.

Nyní použijme dva výše uvedené příklady v kompletní bash funkci, včetně jejího provedení:

#!/bin/bash
#Define a hello world function
hello_world () {
echo “Hello, World!”
echo “This is a test function”
}
#Define a print message function
print_message () {
echo “Let’s learn bash programming”
echo “Enjoy this tutorial”
}
#Execute the hello world function
hello_world
#Execute the print message function
print_message

Toto je výstup skriptu výše:

Hello, World!
This is a test function
Let’s learn bash programming
Enjoy this tutorial

5. Smyčky

Příkazy Loop bash jsou užitečné, pokud chcete provádět příkazy vícekrát. Existují tři typy z nich, které můžete spustit v bash – pro , zatímco a do .

pro loop spustí příkaz pro seznam položek:

#!/bin/bash
for item in [list]
do
[commands]
done

Následující příklad používá for smyčka pro tisk všech dnů v týdnu:

#!/bin/bash
for days in Monday Tuesday Wednesday Thursday Friday Saturday Sunday
do
echo “Day: $days”
done

Na řádku 2 , „dny“ se automaticky stane proměnnou, přičemž hodnoty jsou názvy dnů, které následují. Poté v echo použijeme příkaz $ symbol pro volání hodnot proměnné.

Výstup tohoto skriptu bude následující:

Day: Monday
Day: Tuesday
Day: Wednesday
Day: Thursday
Day: Friday
Day: Saturday
Day: Sunday

Všimněte si, že i když je ve skriptu smyčky pouze jeden příkazový řádek, vytiskne sedm echo výstupy.

Dalším typem smyčky je zatímco . Skript vyhodnotí podmínku. Pokud je podmínka pravda , bude pokračovat ve vykonávání příkazů, dokud výstup přestane splňovat definovanou podmínku.

#!/bin/bash
while [condition]
do
[commands]
done

Podívejme se na jednoduchý příklad, který zahrnuje proměnnou a inkrementální operátor, označený jako ((++)) :

#!/bin/bash
i=0
while [ $i -le 5 ]
do 
echo $i
((i++))
done

Proměnná začíná 0 hodnotu a operátor přírůstku ji zvýší o jednu. Nastavená podmínka je menší nebo rovna pěti, takže příkaz bude pokračovat v iteraci, dokud výstup nedosáhne pět. Výstup tohoto skriptu bude následující:

0
1
2
3
4
5

Poslední typ smyčky, do , je opakem zatímco . Bude opakovat příkaz, dokud se podmínka nestane pravdivou.

Pokud chceme stejný výstup jako while výše uvedený příklad pomocí smyčky, můžeme skript napsat takto:

#!/bin/bash
i=0
until [ $i -gt 5 ]
do 
echo $i
((i++))
done

Nyní se tento příkaz bude opakovat, dokud výstupní hodnota nedosáhne pět. Výstup bude stejný jako v našem příkladu s while smyčka:

0
1
2
3
4
5

6. Podmíněné příkazy

Mnoho programovacích jazyků, včetně bash, používá podmíněné příkazy jako if , pak a další pro rozhodování. Provádějí příkazy a tisknou výstupy v závislosti na podmínkách.

pokud za příkazem následuje podmíněný výraz. Poté následuje pak a příkaz k definování výstupu podmínky. Skript provede příkaz, pokud je podmínka vyjádřená v if tvrzení je pravdivé.

Pokud však chcete provést jiný příkaz, pokud je podmínka nepravdivá, přidejte else příkazu do skriptu a následujte jej pomocí příkazu.

Pojďme se podívat na jednoduché pokud , pak a další prohlášení. Před příkaz zahrneme proměnnou, aby uživatel mohl zadat hodnotu:

#!/bin/bash
echo “Enter a number”
read num
if [[$num -gt 10]]
then
echo “The number is greater than 10”
else
echo “The number is not greater than 10”

7. Čtení a zápis souborů

Existuje několik způsobů, jak číst soubor pomocí cat příkaz je nejoblíbenější. Všimněte si, že tento příkaz přečte celek obsah souboru.

Chcete-li číst obsah řádek po řádku, použijte číst příkaz a smyčka. Před napsáním skriptu pro čtení souboru se nejprve ujistěte, že soubor existuje.

V následujícím příkladu máme soubor to-do.txt soubor, který obsahuje seznam úkolů:

Reply email
Finish report
Call clients
Team evaluation

Použijeme kočku a číst příkazy v naší funkci bash pro čtení a tisk obsahu to-do.txt soubor. První část skriptu bude používat cat zatímco druhá část bude používat čtení příkaz ve smyčce.

#!/bin/bash
echo “Reading the file using cat command”
content=’cat to-do.txt’
echo $content
echo “Reading the file using read command and loop”
filename=’to-do.txt’
while read line
do
echo $line
done<$filename

Výstup skriptu bude následující:

Reading the file using cat command
Reply email Finish report Call clients Team evaluation
Reading the file using read command and loop
Reply email
Finish report
Call clients
Team evaluation

Chcete-li zapsat výstup příkazu do souboru, použijte operátory přesměrování reprezentované > a >> symboly a následujte je s názvem souboru:

output > filename
output >> filename

Buďte opatrní při výběru operátora. Pokud soubor existuje, > operátor přepíše jeho obsah řetězcem nulové délky. Znamená to, že ztratíte stávající obsah souboru. Pokud zadaný název souboru neexistuje, vytvoří jej.

>> operátor naopak přidá výstup do daného souboru.

Zde je jednoduché přesměrování pro zápis výstupu do textového souboru:

echo “Hello, world!” >> hello_world.txt

Přesměrování funguje také s čtením příkaz pro zápis libovolného uživatelského vstupu. Tento příklad skriptu přidá vstupní hodnotu do name.txt soubor:

#!/bin/bash
echo “Enter your name”
read Name
echo $Name >> name.txt

Protože skript přesměruje výstup proměnné do souboru, neuvidíte žádný vytištěný výstup. Chcete-li zobrazit výstup vytištěním obsahu souboru, přidejte ke čtení souboru následující příkazový řádek:

echo ‘cat name.txt’

Ujistěte se, že máte oprávnění ke čtení a zápisu do souboru, abyste předešli oprávnění odepřeno chyba. Pokud chcete přidat výstup k existujícím souborům, ujistěte se, že jste zadali správné názvy souborů.

4 snadné funkce k vyzkoušení prvního skriptu Bash

Nyní, když známe některé příkazy bash, podíváme se na základní příklady funkcí bash pro váš první skript.

Jak již bylo zmíněno dříve, když chcete napsat soubor skriptu bash, použijte příkaz nano filename.sh k vytvoření a otevření souboru .sh soubor a začněte psát své bash funkce. Až budete hotovi, nezapomeňte soubor ukončit a uložit.

Začněte s jednoduchou funkcí ozvěny

Začněme jednoduchou funkcí echo. Začněte definováním názvu funkce následovaného příkazem echo na dalším řádku, stejně jako v příkladu níže:

#!/bin/bash
testfunction () {
echo “My first function”
}
testfunction

Uložte tento skript na testFunction.sh . Když skript spustíte na příkazovém řádku, měli byste vidět následující výstup:

My first function

Mějte na paměti, že pokud zaměníte pozici definice funkce s voláním funkce, dojde k chybě. Podívejme se na příklad níže:

#!/bin/bash
testfunction
testfunction(){
echo “My first function”
}

Tento fragment nebude fungovat. Volá funkci v druhém příkazovém řádku a definuje funkci později. V tomto případě překladač nemůže najít funkci, když provádí skript, což má za následek příkaz nenalezen chyba.

Použití několika parametrů

Funkce Bash akceptují libovolný počet parametrů. Níže uvedený příklad přijímá dva parametry:

#!/bin/bash
testfunction () {
echo $1
echo $2
}
testfunction “Hello” “World”

1 $ představuje první argument, zatímco$2 představuje druhý argument v řádku provádění funkce. Jak jsme použili „Ahoj“ a „Svět“ pro argumenty bude výstup vypadat takto:

Můžete také použít argumenty příkazového řádku a provádět bash funkce. Jeden takový příklad je uveden níže:

#!/bin/bash
addition () {
sum=$(($1+$2))
return $sum
}
read -p "Enter a number: " int1
read -p "Enter a number: " int2
addition $int1 $int2
echo "The result is : " $?

Sčítání je přiřazeno v proměnné součet , a to je vráceno z funkce. Funkce Bash vždy vrací jednu hodnotu. Vstup uživatele se provádí pomocí čtení pro obě čísla. Nakonec se výsledek vytiskne pomocí $? který ukládá návratovou hodnotu $sum z funkce.

Vytváření adresářů a změn cest

Nyní se podívejme na další příklad funkce, kde nejprve vytvoříme adresář a poté změníme cestu tak, aby ukazovala na nové umístění. Tato funkce bude obsahovat mkdir a cd Příkazy Linuxu k vytvoření nového adresáře a změně aktuálního adresáře:

#!/bin/bash
sampleFunction () {
mkdir -p $1
cd $1
}
sampleFunction myDir

Funkce přečte první argument a vytvoří adresář s tímto názvem. Po spuštění skriptu zkontrolujte aktuální pracovní cestu pomocí pwd příkaz na terminálu. Uvidíte, že se aktuálně nacházíte v nově vytvořeném myDir .

Kombinace smyček a podmíněných smyček

Smyčky a podmíněné příkazy jsou také oblíbené ve skriptování bash. Podíváme se na několik příkladů použití obou ve stejném skriptu:

#!/bin/bash
isvalid=true
count=1
while [ $isvalid ]
do
echo $count
if [ $count -eq 5 ];
then
break
fi
((count++))
done

Výše uvedený příklad používá zatímco a pokud prohlášení. Tím se spustí while po kontrole podmíněného příkazu pětkrát zacyklit.

Výstup tohoto skriptu bude:

1
2
3
4
5

pro smyčka může zvyšovat a snižovat čítače. Příklad pro smyčka je zobrazena níže:

#!/bin/bash
for (( count=10; count>0; count-- ))
do
echo -n "$count "
done

Výstup této smyčky for by měl být:

10 9 8 7 6 5 4 3 2 1

Pomocí pokud příkazy, můžeme také definovat else if pomocíelif prohlášení:

#!/bin/bash
echo "Enter a valid number"
read n
if [ $n -eq 101 ];
then
echo "This is the first number"
elif [ $n -eq 510 ];
then
echo "This is the second number"
elif [ $n -eq 999 ];
then
echo "This is the third number"
else
echo "No numbers over here"
fi

Tento skript můžeme také napsat pomocí case prohlášení. V případě výpisy, ;; představuje přerušení velkých a malých písmen, takže pokud hodnota proměnné splňuje některou z podmínek, skočí na konec skriptu:

#!/bin/bash
echo "Enter a valid number"
read n
case $n in
101)
echo "This is the first number" ;;
510)
echo "This is the second number" ;;
999)
echo "This is the third number" ;;
*)
echo "No numbers over here" ;;
esac

Jak spustit Bash Script

Nyní, když jsme napsali bash skript, pojďme se naučit, jak jej spustit z terminálu. Existují tři způsoby, jak to udělat – pomocí bash pomocí ./ a spuštění skriptu z jiného adresáře.

Použití příkazu Bash

První metodou je použití bash příkaz z příslušného adresáře. Můžete mít například function.sh bash skript obsahující jednoduché echo funkce v Test/Bash adresář. Nejprve musíte otevřít adresář pomocí tohoto příkazu:

cd Test/Bash

Poté proveďte následující bash příkaz ke spuštění bash skriptu:

bash function.sh

Výstup byste měli vidět takto:

Pokud se pokusíte spustit skript bez bash příkazu, obdržíte příkaz nenalezen chybová zpráva.

Použití příkazu ./

Skript bash můžete spustit bez bash příkaz. Musíte však soubor nastavit tak, aby se spustil oprávnění pomocí následujícího příkazu z příslušného adresáře:

chmod +x function.sh

Tento příkaz upraví oprávnění k souboru, takže každý může soubor spustit. Jakmile to uděláte, spusťte bash skript pomocí tohoto příkazu:

./function.sh

Pokud oprávnění nenastavíte správně, terminál vytiskne Oprávnění odepřeno chybová zpráva:

Stejně jako bash zobrazí se také příkaz nenalezen chyba, pokud nepoužíváte ./ ve vašem příkazu.

Spustit skript z jiného adresáře

Další alternativou je spuštění skriptu z jiného adresáře. Po vytvoření bash skriptu použijte pwd příkaz k nalezení aktuálního adresáře. Jakmile znáte cestu, můžete skript spustit z libovolného adresáře. Například pomocí následujícího příkazu spusťte function.sh z domovského adresáře:

bash Test/Bash/function.sh

Závěr

Bash čte příkazy shellu a spolupracuje s operačním systémem, aby je provedl. Skvělým aspektem bash je, že můžete zkompilovat mnoho bash příkazů a funkcí do jediného spustitelného skriptu, což vám pomůže zefektivnit váš pracovní postup.

Chcete-li vytvořit soubor skriptu bash, musíte porozumět různým příkazům shellu a jejich správné syntaxi. V tomto tutoriálu jsme probrali sedm základních příkazů:

  • Komentáře
  • Proměnné
  • Echo
  • Funkce
  • Smyčky
  • Podmíněná prohlášení
  • Čtení a zápis souborů

Pokud však chcete využít plný potenciál bash, musíte se naučit mnohem více. Cvičte s příklady, které jsme vám poskytli, a pokračujte ve zkoumání bash, abyste mohli psát lepší a efektivnější skripty.

Probrali jsme tři způsoby, jak spustit bash skript. Pokud máte nějaké dotazy nebo připomínky, zanechte je v sekci níže.


Linux
  1. Bash pro průvodce smyčkou a příklady

  2. Linux cd command tutorial pro začátečníky (8 příkladů)

  3. Jak napsat bash skript nebo automatizovat otevření vi a upravit dokument?

  1. Jak napsat Bash skript s příklady

  2. Linux ln Command Tutorial pro začátečníky (5 příkladů)

  3. Příklady Bash for Loop a While Loop

  1. Linux nl Command Tutorial pro začátečníky (7 příkladů)

  2. Linux nm Command Tutorial pro začátečníky (10 příkladů)

  3. Výukový program Linux OD Command pro začátečníky (6 příkladů)