Jump to content

Linux - Programování


Samnick

Recommended Posts

 

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
Link to comment
Share on other sites

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...