Jak vytvořit skript Shell v linuxu

Jak vytvořit skript Shell v linuxu

Shell je rozhraní operačního systému. Přijímá příkazy od uživatelů a interpretuje je operačnímu systému. Pokud chcete spouštět spoustu příkazů společně, můžete tak učinit vytvořením skriptu shellu. Shell skripty jsou velmi užitečné, pokud potřebujete dělat nějakou úlohu rutinně, jako je záloha. Tyto příkazy můžete vypsat a všechny je spustit pomocí jediného skriptu. Podívejme se, jak můžete vytvořit skript Shell a spustit jej v systému Linux.

Vytvoření skriptu Shell

Přihlaste se k počítači se systémem Linux a otevřete terminál, přejděte do složky, kam chcete uložit skript shellu. Shell skripty končí příponou .sh. Vytvořme náš první shell skript. Vepište

touch script.sh 

Nyní tento soubor skriptu není ve výchozím nastavení spustitelný, musíme tomuto souboru udělit oprávnění ke spuštění. Vepište

chmod +x script.sh 

Nyní do tohoto skriptu shellu přidáme nějaké příkazy. Otevřete tento skript shellu pomocí libovolného textového editoru podle vašeho výběru (založeného na příkazovém řádku nebo na základě GUI) a přidejte nějaké příkazy. Použijeme nano. Vepište

nano script.sh 

Chcete-li otestovat tento skript prostředí, přidejte následující příkazy

echo This is my first shell script touch testfile ls echo End of my shell script 

Uložte změny a spusťte skript shellu zadáním

./script.sh 

Snímek obrazovky výše uvedených kroků

Vidíte, že provedl všechny zadané příkazy.

Komentáře ve skriptu shellu

Jakýkoli řádek, který ve skriptu shellu začíná znakem #, je považován za komentář a shell ho během provádění ignoruje, kromě řádku shebang, který uvidíme později v tomto článku. Podívejme se na příklad. Vytvoří se skript shellu s následujícím obsahem.

# This is a comment echo Testing comments in shell script 

Komentáře ve skriptu Shell

Vidíte, že komentář je ignorován.

Proměnné ve skriptu Shell

Ano, skripty Shell podporují použití proměnných a během jejich deklarace nemusíme definovat typ proměnné. Existují dva typy proměnných:

  • Systémově definované proměnné
  • Uživatelsky definované proměnné.

Systémově definované proměnné, nazývané také proměnné prostředí, jsou obecně velké. Všechny aktuální proměnné prostředí můžete zobrazit pomocí příkazu printenv. Uživatelem definované proměnné jsou nastaveny uživatelem a existují pouze během provádění skriptu. Proměnnou můžete definovat jednoduše zadáním jejího názvu a přiřazením hodnoty se znaménkem = a přístup k proměnné přidáním $ před název proměnné. Proměnné jsou demonstrovány v následujícím příkladu skriptu.

# Accessing an Environment Variable echo $USER # Creating and accessing User defined Variable variable_name='Geeksforgeeks' echo $variable_name 

Proměnné ve skriptu Shell

Definování interpretu skriptů Shell

V Linuxu je k dispozici mnoho shellů, jako je The bourne shell(sh), The Korn Shell(ksh) a GNU Bourne-Again Shell(bash). Skripty napsané pro shell sh se nazývají skripty shellu a mohou být interpretovány jak shelly ksh, tak bash. ksh a Bash jsou vylepšené verze původního shellu sh a mají více funkcí než sh. Bash je obecně výchozí shell ve většině linuxových distribucí a skripty napsané speciálně pro bash shell se nazývají bash skripty.

Můžete určit, který shell bude skript používat, i když je skript spuštěn z jiného shellového terminálu. Chcete-li to provést, přidejte #! v horní části souboru skriptu, za nímž následuje absolutní cesta k vybranému shellu. Chcete-li zadat bash jako interpret, přidejte následující řádek nad skript shellu.

#!/bin/bash 

Tato linie se nazývá linie shebang.

Poznámka: To bude fungovat pouze v případě, že je ve vašem systému nainstalován bash.

Porovnávací operátory

Ve skriptování shellu můžete porovnat dvě proměnné. Tato porovnávání provádíme, abychom se rozhodovali, uvidíme, jak to udělat později v tomto článku, ale předtím je zde seznam některých operátorů porovnání.

Porovnání celých čísel

Operátor Popis
-ekv je rovný
- je se nerovná
-gt je větší než
-ge je větší nebo rovno
-lt je méně než
- je menší nebo rovno

Porovnání řetězců

Operátor Popis
== je rovný
!= se nerovná
< je menší než v abecedním pořadí ASCII
> je větší než v abecedním pořadí ASCII

Přidáme před, protože je třeba je zakódovat, když je zadáváme do konstrukce [ ]. Nyní se podívejme, kde se používají.

Podmíněné výroky

Podmíněné příkazy se používají k provedení bloku kódu pouze při splnění určitých podmínek. Shell skripty podporují použití podmíněných příkazů. Ke kontrole podmínek používáme srovnávací operátory. Podívejme se na několik podmíněných příkazů.

Pokud prohlášení

Zkontroluje podmínku, a pokud je podmíněna pravdivá, provede příkazy.

Syntax

if [ condition ] then #statements fi 

Podívejme se na příklad.

#!/bin/sh x=10 y=11 if [ $x -ne $y ] then echo 'Not equal' fi 

.if prohlášení

If- else prohlášení

V příkazu if-else můžete zadat sadu příkazů, které se mají spustit, pokud podmínka není splněna.

Syntax

if [ condition ] then #set of statements if the condition is true else #set of statements if the condition is false fi 

Podívejme se na příklad

#!/Syntaxbin/sh x=10 y=10 if [ $x -ne $y ] then echo 'Not equal' else echo 'They are equal' fi 

.if-else prohlášení

Existují další podmíněné příkazy, můžete si o nich přečíst tady .

Poznámka: Zadejte mezeru za [ a před ] a určete podmínku, která má být zkontrolována, jinak se zobrazí chyba.

Smyčky

Pomocí smyček můžete sadu příkazů znovu a znovu, dokud není splněna určitá podmínka. Podívejme se na některé smyčky.

Zatímco smyčka

Začne spouštět zadané příkazy, pokud je podmínka pravdivá, a opakuje je, dokud podmínka není nepravdivá.

Syntax

while [ condition ] do #set of statements done 

Podívejme se na příklad.

#!/bin/sh x=2 while [ $x -lt 6 ] do echo $x x=`expr $x + 1` done 

Zatímco smyčka

Při přiřazování k proměnné uzavřeme příkaz expr do ` `. O příkazu expr si můžete přečíst zde.

Pro smyčku

Ve smyčce for proměnná iteruje seznam hodnot a končí, když již nejsou žádné další hodnoty, které by bylo možné iterovat.

Syntax

for var in val1 val2 val3 do #statements done 

Podívejme se na příklad.

#!/bin/sh for var in 2 4 5 8 do echo $var done 

pro smyčku

O smyčkách si můžete přečíst podrobně tady .

Poziční argumenty

Poziční argumenty jsou argumenty nebo hodnoty, které předáváme skriptu shellu při provádění skriptu. Jsou přístupné pomocí proměnných $0, $1, $2 … $9. Kromě toho na ně odkazují ${10}, ${11} a tak dále. $# ukládá počet předávaných argumentů a $0 ukládá název skriptu. Podívejme se na příklad, abychom to všechno pochopili.

#!/bin/sh echo 'No of arguments is $#' echo 'Name of the script is $0' echo 'First argument is $1' echo 'Second argument is $2' 

Chcete-li předat argumenty, stačí je zadat do terminálu za název skriptu, jak je uvedeno níže.

Poziční argumenty

Ukládání výstupu příkazů

Výstup příkazů můžete uložit do proměnné ve skriptu shellu. Existují dva způsoby, jak to udělat.

Syntax

#Syntax 1 var=$(a valid linux command) #Syntax 2 var2=`a valid linux command` 

Podívejme se na příklad.

#!/bin/sh b=$(pwd) c=`pwd` echo $b echo $c d=$(ls /bin | grep bash) echo $d 

Ukládání výstupu příkazů

Výstupní kódy příkazů shellu

Kdykoli příkaz skončí a vrátí řízení nadřazenému procesu, vrátí kódy ukončení mezi 0 a 255. Kód ukončení 0 znamená, že příkaz byl úspěšný, a jakýkoli jiný kód ukončení znamená, že příkaz nebyl úspěšný. Po spuštění libovolného příkazu můžete zobrazit výstupní kód pomocí $? variabilní. Viz příklad níže.

výstupní kód příkazu shell

Můžete ručně nastavit ukončovací kód pro váš shell skript. To lze použít s podmíněnými příkazy k vyjádření, zda bylo dosaženo účelu skriptu nebo ne.

Příklad

#!/bin/sh read x if [ $x -ne 10 ] then echo failed exit 1 else echo passed exit 0 fi 

výstupní kód příkazu shell