V prípade, že potrebujeme opakovane vykonať rozsiahlejšiu sevenciu príkazov je namiesto ich ručného zadávania užitočné vytvoriť si skript.
Skripty sú textové súbory obsahujúce príkazy v nejakom skriptovacom jazyku. Skripty môžme obvykle spustiť spustením príslušného interpretera a zadaním cesty k skriptu ako parametra.
Cvičenie Vytvorte si súbor s názvom
s1.sh
a vložte doňho nasledujúci riadok:
echo "Hello world!"
Cvičenie Následne skript spustite pomocou príkazu:
$> /bin/bash ./s1.sh Hello world!
V unixových systémoch je možné spúšťanie skriptov zjednodušiť pridaním nasledujúcej hlavičky na prvý riadok skriptu:
#!/cesta/k/interpretru [parametre...]
a pridaním prístupových práv na spustenie skriptu:
chmod u+x /cesta/k/skriptu
Cvičenie Skopírujte skript
s1.sh
dos2.sh
.
$> cp s1.sh s2.sh
Cvičenie Pridajte do skriptu
s2.sh
hlavičku s cestou k interpretru/bin/bash
, takze bude mať nasledovný obsah:
#!/bin/bash echo "Hello world!"
Cvičenie Pridajte si prístupové práva na spustenie skriptu
s2.sh
:
$> chmod u+x ./s2.sh
Cvičenie Spustite skript
s2.sh
:
$> ./s2.sh
![]() |
Poznámka |
---|---|
Pri spúšťaní spustiteľných súborov, ktoré sú v adresároch,
ktoré nie sú vymenované v premennej |
Algoritmy implementované v skriptoch často bývajú parametrizované.
Pre priamy prístup k prvým deviatim parametrom implementuje bash
nasledujúce špeciálne premenné:
$0
- príkaz, ktorým bol skript spustený.
$1
- prvý argument zadaný pri spustení skriptu.
$2
- druhý argument.
$9
- deviaty argument.
$#
- počet argumentov.
$@
- zoznam všetkých argumentov (okrem $0
).
Cvičenie Vytvorte nový skript
s3.sh
s nasledujúcim obsahom:
#!/bin/bash echo $# echo 0:$0 echo 1:$1 echo 2:$2 echo 3:$3 echo 4:$4 echo 5:$5 echo 6:$6 echo 7:$7 echo 8:$8 echo 9:$9
Cvičenie Pridajte si prístupové práva na spustenie:
$> chmod u+x ./s3.sh
Cvičenie Spustite ho niekoľkokrát s rôznym počtom argumentov:
$> ./s3.sh $> ./s3.sh A B C $> ./s3.sh A B C D E F $> ./s3.sh A B C D E F G H I $> $PWD/s3.sh
Okrem získania hodnoty premennej alebo parametra umožňuje bash
nad ich hodnotami vykonávať jednoduché operácie. V nasledujúcich
odrážkach môže X
byť názov premennej alebo číslo
od 0 po 9.
${X}
- Alternatívny spôsob získania hodnoty
premennej.
${#X}
- Dĺžka reťazca v premennej X
.
${X:I}
- Podreťazec z hodnoty premennej od indexu
I
.
${X:I:N}
- Podreťazec z hodnoty premennej od
indexu I
s dĺžkou N
.
${X#PREFIX}
- Podreťazec z hodnoty premennej
bez reťazca PREFIX
na začiatku.
${X%SUFFIX}
- Podreťazec z hodnoty premennej
bez reťazca SUFFIX
na konci.
${X/PATTERN/STRING}
- Hodnota premennej kde je
vzor PATTERN
nahradený reťazcom STRING
.
Cvičenie Vytvorte skript
s4.sh
s nasledujúcim obsahom:
#!/bin/bash echo $1_$2 echo ${1}_${2} echo ${#1} echo ${1:3} echo ${1:2:2} echo ${1#abc} echo ${1%def} echo ${1/cde/${2}}
Cvičenie Pridajte si prístupové práva a spustite ho:
$> chmod u+x ./s4.sh $> ./s4.sh abcdef xyz