2. BASH — Skripty

BASH — Skripty #

Osnova cvičení #

  • domácí úkol
  • manipulace s proměnnými
  • vstupní argumenty
  • pole

Domácí úkol #

Úkoly #

  1. Manipulace s proměnnými

    • Uložte do proměnné a=nazev.txt
    • Jak záskáte první písmeno, které proměnná obsahuje?
    • Jak získáte koncovku, pokud víte, že obsahuje 3 znaky?
    • Jak získáte koncovku, pokud nevíte, kolik znaků pobsahuje?
    • Jak odtrhnete koncovku, když víte, že je to txt?
    • Jak odtrhnete koncovku, pokud víte, že je za poslední tečkou v názvu?
    • Jak získáte základní jméno z názvu jiny_soubor.txt.tgz? (základní jméno je bez tečky, tedy zde jiny_soubor)
    • Jak z absolutního názvu s adresářem získáte návez adresáře? (např pro /home/user/psy/cv02/text.txt.tgz)
    • Jak z zjistíte, zda je zadaný adresář absolutní cestou? (např /home/user/psy/cv02/text.txt.tgz je absolutní cesta, ~/psy/obsah.txt je také absolutní, cesta ../psy/l.txt je raltivní)
    • Jak z relativní cesty vytvoříte absolutní cestu?
    • Jak z absolutního názvu s adresářem získáte návez souboru? (např pro `/home/user/psy/cv02/text.txt.tgz')
    • Jak z absolutního názvu s adresářem získáte návez základní jméno souboru bez koncovky? (např pro `/home/user/psy/cv02/text.txt.tgz')
  2. Mezery oddělují parametry

    • skript show_arguments.sh
#!/usr/bin/env bash

echo "NUMBER OF ARGUMENTS: $#"
I=0
while [ $# -gt 0 ]; do
  let I++
  echo "ARGUMENT $I: '$1'"
  shift
done
  1. Parametry

    • vysvětlete co tento skript dělá
    • zkuste ho spustit s parametry Hello world a 'Hello world'
    • chování skriptu vysvětlte
  2. Prozkoumejte následující skript

    • skript test.sh
#!/usr/bin/env bash

l=()
for f in *.txt
do
  s=`wc -w "$f" | cut --delimiter=' ' -f1`
  if [ "$s" -gt 10 ]
  then
    l+=( "$f" )
  fi
done
  1. Pole
    • Co skript test.sh dělá?
    • Bude nějaký rozdíl, pokud bychom na konec skriptu připsali show_arguments "${l[@]}" nebo show_arguments "${l[*]}" ?
    • Na čem tento rozdíl záleží?
    • Napište příkaz, aby byly všechny vybrané souboru archivovány příkazem tar czf do souboru, který se bude jmenovat zaloha.tgz.
    • Upravte příkaz tak, aby jméno archivu bylo jméno prvního vybraného souboru s příponou .tgz

Materiály #