GNU/Linux >> Znalost Linux >  >> Linux

Shell Scripting pro začátečníky – Jak psát Bash skripty v Linuxu

Skriptování shellu je důležitou součástí automatizace procesů v Linuxu. Skriptování vám pomůže zapsat posloupnost příkazů do souboru a poté je provést.

To vám ušetří čas, protože nemusíte znovu a znovu psát určité příkazy. Denní úkoly můžete provádět efektivně a dokonce je naplánovat na automatické provádění.

Můžete také nastavit určité skripty, které se mají spustit při spuštění, jako je zobrazení konkrétní zprávy při spuštění nové relace nebo nastavení určitých proměnných prostředí.

Aplikace a použití skriptování jsou četné, tak se pojďme ponořit.

V tomto článku se dozvíte:

  1. Co je to bash shell?
  2. Co je to bash skript a jak ho poznáte?
  3. Jak vytvořit svůj první bash skript a spustit jej.
  4. Základní syntaxe skriptování shellu.
  5. Jak zobrazit naplánované skripty systému.
  6. Jak automatizovat skripty plánováním prostřednictvím úloh cron.

Nejlepší způsob, jak se učit, je cvičit. Velmi vám doporučuji, abyste pokračovali v používání Replit. K běžícímu linuxovému shellu můžete přistupovat během několika minut.

Úvod do Bash Shell

Příkazový řádek Linuxu poskytuje program zvaný shell. V průběhu let se program shellu vyvíjel, aby vyhovoval různým možnostem.

Různí uživatelé mohou být nakonfigurováni pro použití různých shellů. Většina uživatelů však dává přednost tomu, aby zůstala u aktuálního výchozího prostředí. Výchozí shell pro mnoho linuxových distribucí je GNU Bourne-Again Shell (bash). Bash je následován Bourne shellem (sh ).

Když poprvé spustíte shell, použije spouštěcí skript umístěný v .bashrc nebo .bash_profile soubor, který vám umožňuje přizpůsobit chování shellu.

Když je shell používán interaktivně, zobrazuje $ když čeká na příkaz od uživatele. Říká se tomu prompt shellu.

[username@host ~]$

Pokud shell běží jako root, výzva se změní na # . Výzva shellu superuživatele vypadá takto:

[root@host ~]#

Bash je velmi výkonný, protože může zjednodušit určité operace, které je obtížné efektivně provádět s GUI. Pamatujte, že většina serverů nemá grafické uživatelské rozhraní a je nejlepší naučit se používat možnosti rozhraní příkazového řádku (CLI).

Co je to Bash Script?

Bash skript je řada příkazů zapsaných v souboru. Ty jsou čteny a prováděny programem bash. Program se provádí řádek po řádku.

Můžete například přejít na určitou cestu, vytvořit složku a vytvořit v ní proces pomocí příkazového řádku.

Stejnou sekvenci kroků můžete provést uložením příkazů do bash skriptu a jeho spuštěním. Skript můžete spustit libovolný počet opakování.

Jak poznáte Bash Script?

Přípona souboru .sh .

Podle konvencí pojmenování končí bash skripty .sh . Bash skripty však mohou běžet naprosto v pořádku i bez sh rozšíření.

Skripty začínají úderem bash.

Skripty jsou také označeny shebang . Shebang je kombinací bash # a bang ! sledoval cestu bash shell. Toto je první řádek skriptu. Shebang řekne shellu, aby to provedl přes bash shell. Shebang je prostě absolutní cesta k interpretovi bash.

Níže je uveden příklad příkazu shebang.

#! /bin/bash

Cesta bash programu se může lišit. Později uvidíme, jak to identifikovat.

Práva k provedení

Skripty mají spouštěcí práva pro uživatele, který je spouští.

Prováděcí právo je reprezentováno x . V níže uvedeném příkladu má můj uživatel rwx (číst, zapisovat, spouštět) práva pro soubor test_script.sh

Barva souboru

Spustitelné skripty se zobrazují v jiné barvě než zbytek souborů a složek.

V mém případě se skripty s právy provádění zobrazují zeleně.

Jak vytvořit svůj první skript Bash

Vytvořme jednoduchý skript v bash, jehož výstupem je Hello World .

Vytvořte soubor s názvem hello_world.sh

touch hello_world.sh

Najděte cestu ke svému bash shellu.

which bash

V mém případě je cesta /usr/bin/bash a zahrnu to do shebangu.

Napište příkaz.

Budeme echo „ahoj světe“ do konzole.

Náš skript bude vypadat nějak takto:

#! usr/bin/bash
echo "Hello World"

Upravte soubor hello_world.sh pomocí libovolného textového editoru a přidejte do něj výše uvedené řádky.

Poskytněte svému uživateli práva k provádění.

Upravte oprávnění k souboru a povolte spuštění skriptu pomocí příkazu níže:

chmod u+x hello_world.sh

chmod upravuje stávající práva souboru pro konkrétního uživatele. Přidáváme +x uživateli u .

Spusťte skript.

Skript můžete spustit následujícími způsoby:

./hello_world.sh

bash hello_world.sh .

Zde je výstup:

Základní syntaxe skriptování Bash

Stejně jako jakýkoli jiný programovací jazyk se i bash skriptování řídí sadou pravidel pro vytváření programů srozumitelných pro počítač. V této části budeme studovat syntaxi bash skriptování.

Jak definovat proměnné

Proměnnou můžeme definovat pomocí syntaxe variable_name=value . Chcete-li získat hodnotu proměnné, přidejte $ před proměnnou.

#!/bin/bash
# A simple variable example
greeting=Hello
name=Tux
echo $greeting $name

Tux je také jméno maskota Linuxu, tučňáka.

Aritmetické výrazy

Níže jsou uvedeny operátory podporované bash pro matematické výpočty:

Operátor Použití
+ dodatek
- odčítání
* násobení
/ divize
** umocnění
% modul

Uveďme si několik příkladů.

Číselné výrazy lze také vypočítat a uložit do proměnné pomocí níže uvedené syntaxe:

var=$((expression))

Zkusme příklad.

#!/bin/bash

var=$((3+9))
echo $var

Zlomky nejsou správně vypočteny pomocí výše uvedených metod a nejsou zkráceny.

Pro výpočty v desítkové soustavě , můžeme použít bc příkaz k získání výstupu na určitý počet desetinných míst. bc (Bash Calculator) je kalkulačka příkazového řádku, která podporuje výpočet až do určitého počtu desetinných míst.

echo "scale=2;22/7" | bc

Kde scale definuje počet desetinných míst požadovaných ve výstupu.

Jak číst vstup uživatele

Někdy budete muset shromáždit uživatelské vstupy a provést příslušné operace.

V bash můžeme převzít uživatelský vstup pomocí read příkaz.

read variable_name

Chcete-li uživatele požádat o vlastní zprávu, použijte -p vlajka.

read -p "Enter your age" variable_name

Příklad:

#!/bin/bash

echo "Enter a numner"
read a

echo "Enter a numner"
read b

var=$((a+b))
echo $var

Logické operátory numerického srovnání

Porovnání se používá ke kontrole, zda se příkazy vyhodnotí jako true nebo false . K porovnání dvou tvrzení můžeme použít níže uvedené operátory:

Operace Syntaxe Vysvětlení
Rovnost číslo1 -ekv číslo2 je num1 rovno num2
Větší než rovno číslo1 -ge číslo2 je num1 větší než rovno num2
Větší než číslo1 -gt číslo2 je num1 větší než num2
Je menší než rovno číslo1 -le číslo2 je num1 menší než rovno num2
Méně než číslo1 -lt číslo2 je num1 menší než num2
Nerovná se číslo1 -ne číslo2 je num1 nerovná se num2

Syntaxe :

if [ conditions ]
    then
         commands
fi

Příklad :

Porovnejme dvě čísla a najdeme jejich vztah:

read x
read y

if [ $x -gt $y ]
then
echo X is greater than Y
elif [ $x -lt $y ]
then
echo X is less than Y
elif [ $x -eq $y ]
then
echo X is equal to Y
fi

Výstup:

Podmíněná prohlášení (rozhodování)

Podmínky jsou výrazy, které se vyhodnotí jako booleovský výraz (true nebo false ). Ke kontrole podmínek můžeme použít if , if-else , if-elif-else a vnořené podmínky.

Struktura podmíněných příkazů je následující:

  • if...then...fi prohlášení
  • if...then...else...fi prohlášení
  • if..elif..else..fi
  • if..then..else..if..then..fi..fi.. (Vnořené podmínky)

Syntaxe :

if [[ condition ]]
then
	statement
elif [[ condition ]]; then
	statement 
else
	do this by default
fi

K vytvoření smysluplných srovnání můžeme použít AND -a a NEBO -o také.

Níže uvedené prohlášení se překládá jako:If a je větší než 40 a b je menší než 6.

if [ $a -gt 40 -a $b -lt 6 ]

Příklad :Pojďme najít typ trojúhelníku čtením délek jeho stran.

read a
read b
read c

if [ $a == $b -a $b == $c -a $a == $c ]
then
echo EQUILATERAL

elif [ $a == $b -o $b == $c -o $a == $c ]
then 
echo ISOSCELES
else
echo SCALENE

fi

Výstup :

Testovací případ č. 1

Testovací případ č. 2

Testovací případ č. 3

Opakování a přeskakování

Cykly For vám umožňují provádět příkazy určitý počet opakování.

Opakování s čísly:

V níže uvedeném příkladu se smyčka bude opakovat 5krát.

#!/bin/bash

for i in {1..5}
do
    echo $i
done

Opakování s řetězci:

Můžeme také procházet řetězce.

#!/bin/bash

for X in cyan magenta yellow  
do
	echo $X
done

Během smyčky

Zatímco cykly kontrolují podmínku a opakují se, dokud podmínka nezůstane true . Potřebujeme poskytnout příkaz čítače, který zvýší čítač pro provádění řídicí smyčky.

V níže uvedeném příkladu (( i += 1 )) je příkaz čítače, který zvyšuje hodnotu i .

Příklad:

#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
   echo "$i"
  (( i += 1 ))
done

Čtení souborů

Předpokládejme, že máme soubor sample_file.txt jak je uvedeno níže:

Můžeme číst soubor řádek po řádku a tisknout výstup na obrazovku.

#!/bin/bash

LINE=1

while read -r CURRENT_LINE
	do
		echo "$LINE: $CURRENT_LINE"
    ((LINE++))
done < "sample_file.txt"

Výstup:

Jak provádět příkazy se zpětnými tiky

Pokud potřebujete do skriptu zahrnout výstup složitého příkazu, můžete tento příkaz napsat do zadních znamének.

Syntaxe:

var=` commands `

Příklad :Předpokládejme, že chceme získat výstup seznamu přípojných bodů pomocí tmpfs jejich jménem. Můžeme vytvořit příkaz takto:df -h | grep tmpfs .

Abychom jej zahrnuli do bash skriptu, můžeme jej uzavřít do zadních znamének.

#!/bin/bash

var=`df -h | grep tmpfs`
echo $var

Výstup:

Jak získat argumenty pro skripty z příkazového řádku

Skriptu je možné při spuštění zadat argumenty.

$@ představuje pozici parametrů počínaje jedničkou.

#!/bin/bash

for x in $@
do
    echo "Entered arg is $x"
done

Spusťte to takto:

./script arg1 arg2

Jak automatizovat skripty plánováním přes úlohy cron

Cron je nástroj pro plánování úloh přítomný v systémech podobných Unixu. Úlohy můžete naplánovat tak, aby se spouštěly denně, týdně, měsíčně nebo v určitou denní dobu. Automatizace v Linuxu silně závisí na úlohách cron.

Níže je uvedena syntaxe pro plánování cronů:

# Cron job example
* * * * * sh /path/to/script.sh

Zde * reprezentovat představuje minuty, hodiny, dny, měsíce, dny v týdnu.

Níže je několik příkladů plánování úloh cronu.

PLÁNOVÁNÍ PLÁNOVANÁ HODNOTA
5 0 * 8 * V 00:05 v srpnu.
5 4 * * 6 V neděli ve 4:05.
0 22 * ​​* 1-5 Ve 22:00 každý den v týdnu od pondělí do pátku.

O cronu se můžete podrobně dozvědět v tomto příspěvku na blogu.

Jak zkontrolovat existující skripty v systému

Používání crontab

crontab -l uvádí již naplánované skripty pro konkrétního uživatele.

Použití příkazu find

find příkaz pomáhá najít soubory na základě určitých vzorů. Protože většina skriptů končí .sh , můžeme použít vyhledávací skript takto:

find . -type f -name "*.sh"

Kde,

  • . představuje aktuální adresář. Podle toho můžete změnit cestu.
  • -type f označuje, že typ souboru, který hledáme, je textový soubor.
  • *.sh říká, že mají odpovídat všem souborům končícím na .sh .

Pokud si chcete přečíst o příkazu find podrobně, podívejte se na můj další příspěvek.

Zabalení

V tomto tutoriálu jsme se naučili základy skriptování shellu. Podívali jsme se na příklady a syntaxi, které nám mohou pomoci napsat smysluplné programy.

Jaká je vaše oblíbená věc, kterou jste se z tohoto tutoriálu naučili? Dejte mi vědět na Twitteru!

Zde si můžete přečíst mé další příspěvky.

Pracovní vektor vytvořený makrovektorem - www.freepik.com


Linux
  1. Jak analyzovat Json pomocí skriptování Shell v Linuxu?

  2. Jak kódovat obrázek base64 v linux bash / shell

  3. Jak se Linux vypořádává se skripty shellu?

  1. Jak otestovat shodu skriptů Shell s Posix?

  2. Jak porovnávat řetězce ve skriptování Bash Shell

  3. Jak zopakovat nový řádek ve skriptech Bash Shell

  1. Skriptování v Linuxu:3 postupy pro smyčky while v Bash

  2. 12 Bash pro příklady smyček pro vaše skriptování prostředí Linux

  3. Jak psát Linux Init Scripts založené na LSB Init Standard