Jump to content

Recommended Posts

Posted

 

1.png.9dc8b74b5b7f7c17d5558556d4189ef5.png

 

shell není jen příkazový řádek pro jednotlivé příkazy

  • je to programovací jazyk pro psaní skriptů
  • skript je soubor obsahující posloupnost příkazů
    • Nezáleží na koncovce, nemusí být, je zvykem .sh
    • Na prvním řádku označení interpretu (jaký program má tento skript zpracovat)

 

  •  BASH (shell):
#!/bin/bash

 

  • Např PHP
#!/bin/php -f


Existují dva druhy příkazů

  • interní příkazy BASHe
  • externí programy

 

Základy SHELLu

  • Obvykle 1 příkaz na řádek
    • více příkazů na řádek
cd /; echo Text“; mkdir samnick

 

  • Jeden příkaz na více řádků (pro přehlednost)
prikaz --parametr1 --parametr2 \
--parametr3
  • Komentář: #

 

Parametry

  • Parametry jsou odděleny mezerou
./skript.sh parametr1 parametr2
  • Parametr uzavřeme do uvozovek
./skript.sh toto je parametr 1 parametr2
  • Pozor na víceslovné adresáře a soubory
cat Program Files\soubor.txt

Ve skript se k hodnotám parametrů dostaneme přes $N

  • $1 – první parametr
  • $2 – druhý parametr atd.
  • $0 – název skriptu (skript.sh)
  • $$ - PID aktuálního procesu
  • $# - počet parametrů

 

Proměnné

Vytvoření proměnné zadáním hodnoty
Nepsaným standardem je psát proměnné velkými písmeny

CESTA=/files/server
SOUBOR=“$1
ZDROJ=“$CESTA/$SOUBOR
CIL=/fivem
cp $ZDROJ $CIL

Pozor na víceslovné hodnoty

  • Je vždy lepší používat uvozovky
  • Tento příkaz nefunguje a výsledkem je něco jiného
SOUBOR=nazev souboru

 

Složitější situace s názvem proměnné a následujícího textu

echo $PREFIX_nasledujici_text # špatně
echo ${PREFIX}_nasledujici_text

 

  • Pro získání výstupu příkazu se používá opačný apostrof `
ADRESAR=`pwd`
POCET=`ls $ADRESAR | wc -l`
echo v adresari $ADRESAR je $POCET souboru

 

  • Přečtení jedné hodnoty =  čte řádek ze vstupu, tj. čeká na ENTER
echo -n Zadej sve jmeno: 
read JMENO
echo Tve jmeno je $JMENO

 

Příkaz test = []

  • Příkaz test vyhodnocuje logickou podmínku
    • Podle toho vrátí návratovou hodnotu (0 = true)
  • Zkrácený zápis pomocí závorek []
    • Pozor na mezery kolem závorek a operátorů!!!
test $1 == fivem
[ $1 == fivem ] # stejný zápis

 

  • Příklad
[ -n $1 ] || ( echo První parametr je prazdny“; exit 1 )

 

if

if podminka; then
command
elif podminka; then
command
fi

 

  • Zavolá se příkaz podmínka, rozhoduje se dle návratové hodnoty
if [ -f $1 ]; then
echo Vypis souboru $1“; cat $1
else
echo Soubor neexistuje
exit 1
fi

 

for

for PROM in VSTUP; do
echo $PROM
done

 

  • Postupně bere slova za in (odděleno mezerami) a dosazuje to do proměnné PROM
for ROK in 2001 2002 2003 2004; do
mkdir rok_$ROK
done

 

  • Použití většího interval
for ROK in `seq 2001 2020`; do ...

 

  • cyklus se soubory v adresáři
for folder in *.txt; do
# komentar
if [ ! -f “$folder“ ]; then continue; fi
# pauza
if [ “$folder“ = “end.txt“ ]; then break; fi
echo “je tu soubor $folder“
done


while

  • Opakuje cyklus dokud je splněna podmínka, takže volaný příkaz v podmínce má návratovou hodnotu 0
    • Upřesnění příkazu read
      • Uvedením názvů více proměnný se vstup rozdělí dle mezer
      • Do poslední proměnné se dá zbytek z řádku na vstupu
      • Read vrací 0, když je ještě něco na vstupu, 1 znamená konec
while read JMENO PRIJMENI; do
echo “jmeno: $JMENO, prijmeni: $PRIJMENI“
done

Pozn: musíme ale počítat že jsou na vstupu dodány dva parametry

 

subshell

Pomocí kulatých závorek lze spustit subshell a pracovat s jeho vstupem a výstupem. Např. chceme číst řádky ze souboru a s nimi postupně provádět další operace

cat /etc/passwd | (
while read -d “:“ UZIV FOO; do
echo “uzivatel: $UZIV“
done
) > vystup.txt
  • Parametrem -d změníme oddělování

 

funkce - podprogramy

V případě používání funkcí jsou parametry $1, $2 atd. parametry funkce a nikoliv skriptu. Ve funkci se nelze dostat k parametrům scriptu. Ostatní proměnné jsou globální.

FIVEM=/fivem
start()
{
tar jcf $FIVEM/$1.tar.bz $2
}
start scipts /fivem_scipts
start data /fivem_data



V příloze jsou uloženy dvě PDF kde jsou podrobnosti

bash_script.pdf

bash_ocima_bohdana_milara.pdf

  • Like 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...