Páté cvičení – Proměnné, skripty, návratové kódy
Příkazy a plán:
- Proměnné a psaní skriptů
- Návratové kódy a
&&
a ||
cut
sort
, paste
, join
Příklady:
- Napište skript
hello.sh
, který vypíše Hello, world!
, nastavte mu právo na spuštění a spusťte ho.
- Napište skript
hello2.sh
přijímající jeden parametr, který pozdraví aktuálně přihlášeného uživatele Ahoj <jmeno>, chci ti rict: <parametr>
, nastavte mu právo na spuštění a spusťte ho.
- Jméno uživatele zjistíte z proměnné
$USER
- První parametr dostanete v proměnné
$1
- Co dostane program v proměnné
$0
?
- Upravte program, aby přijímal (a vypisoval) libovolný počet parametrů (aby šlo volat
./hello2.sh mej se stale lepe a lepe
)
- Vzpomínka na první úkol: Uložte si do proměnné
$datum
aktuální datum (nápověda: zavolání subshellu)
- Uložte si své skripty do adresáře
bin
ve svém home a přidejte tento adresář do své $PATH
(abyste mohli odkudkoliv
volat své spustitelné soubory, aniž byste museli zadávat cestu k nim)
- Po provedení příkazu nastaví příkaz (podle svého výsledku) návratový kód (jako return v C – 0 je OK, cokoliv jiného je chyba).
K výsledku se lze dostat v proměnné
$?
- Zkuste si to třeba na příkazu
ls
– zadejte mu existující a neexistující cestu
- Pomocí
&&
a ||
lze za sebe řetězit příkazy, fungují jako AND a OR. Pokud napíšete prikaz1 && prikaz2
,
tak druhý příkaz se provede pouze, pokud uspěje první. Naopak u prikaz1 || prikaz2
se druhý příkaz provede pouze, pokud první selže.
- Napište skript, který vytvoří soubor (zadaný jako parametr) pouze, pokud soubor ještě neexistuje (pokud existuje, vypíše hlášku)
- Stáhněte si soubor aircrafts2.csv (data o nehodách letadel), třeba pomocí
wget http://kam.mff.cuni.cz/~setnicka/static/aircrafts2.csv
- Lehce opravený soubor z minulého cvika
- Již má odstraněné uvozovky a políčka oddělená středníky
- Seřaďte soubor
aircrafts2.csv
v pořadí podle počtu obětí (od největšího počtu)
- Hlavička musí zůstat na svém místě
- Jako výše, ale řaďte primárně podle počtu obětí a sekundárně podle typu letadla
- Vypište ze souboru
aircrafts2.csv
všechny různé typy letadel
Stáhněte si soubory countrycodes_en.csv a kodyzemi_cz.csv. Obojí jsou soubory ve formátu CSV, kde je jako oddělovače sloupců použito středníku. Napište skript, který (bez modifikace původních souborů, ať můžete rychle testovat):
- Zbaví soubory uvozovek
- Vytvoří výpis zemí se dvěma sloupci oddělenými rovnítkem ve tvaru český název=anglický název (spárované podle kódu)
*/?>
Příklady pro pokročilé:
- Napište skript, který vypíše své parametry v reverzním pořadí
- Napište skript, který s vámi bude hrát hádání čísel – Vymyslí si náhodné číslo (to můžete získat třeba z proměnné
$RANDOM
) a uživatel bude postupně zadávat své
tipy. Skončí, když se uživatel trefí, nebo vypíše, zda je hádané číslo menší, nebo větší. Bonus: Pokud zavoláte skript s jedním argumentem, tak bude si vybere náhodné číslo z rozsahu
0 až zadaná horní mez.