Bash scripting 2. dil

Obrázok používateľa %user

0x01 :: Intro
Tak sem tu zase s novou varkou doufam uzitecnych informaci o bash scriptingu, dnes by jsme si ukazali case loop, pouzivani prikazu v promennych, take hratky s promennymi, pouzivani escape sekvenci a ktere jsou vyhrazene, a urcite take zakladni arrays a funkce a !!mozna!! i barvicky, pokud uz to nebude moc dlouhe

0x02 :: Case loop

#!/bin/bash<br>
echo "zadejte nejake cislo [1.2]";
read promenna                      #default STDIN
case $promenna in                  #zacatek case loop

1)
echo "zadali jste 1"               #po zadani cisla 1 se aktivuje tato moznost
;;                                 # dva strednniky nesmi nikdy chybet
2)                                 #po zadani cisla 2 se aktivuje tato moznost
echo "zadali jste 2"
;;
*)                                #Pokud zadate cokoliv jineho, aktivuje se tato moznost

echo "Whatever"                   # pouziva wildcard *
;;
esac                              #ukoncovaci syntaxe

Zde je videt ze muzeme tvori lehka vyberova menu, nebo reagovat na predpokladane podnety, napriklad kdyz chceme zobrazit po spusteni scriptu ruzne osloveni v zavislosti na datu.
0x03 :: Prikazy v promennych

#!/bin/bash
cas=`date +"%r"`          #nacteni casu do promenne, pro vice moznosti formatovani viz `man date`
echo "cas je $date";      #uziti promenne pro echo
echo "cas je take `date`" #prime a prehlednejsi pouziti pro promenne ktere neni nutne rucne menit

0x04 :: Hratky s promennymi
Nekdy se muze stat, ze budete pouzivat dlouhou syntaxi a nebudete se chtit ztratit, muze se hodit jina syntaxe, kterou vam ukazu:

#!/bin/bash
read var1
echo "$var1";
echo "${var1}"; # toto echo printne stejny vyraz, jako to predtim

Vypisovani logicke posloupnosti:
#!/bin/bash<br>
echo {1..1337} # Vypise posloupnost cisel od 1 do 1337. u tohoto stylu NESMI byt pouzity zadne uvozovky

Napriklad nastavovani defaultnich hodnot u promennych

#!/bin/bash
echo ${username-`whoami`} # pouzit prikaz v ``, ${} a defaultni hodnota, ktera je nastavena pomoci -

0x05 :: Escape sekvence

              \a     ASCII bell
              \d     datum ve formatu "Den v tydnu Me
              \e     ASCII escape znak
              \h     hostname do prvniho `.
              \H     hostname
              \j     pocet `jobs` ktere prave bash vykonava
              \l     basename terminaloveho zarizeni shellu
              \n     novy radek
              \r     carriage return
              \s     jmeno shellu
              \t     cas 24-hodinovem HH:MM:SS formatu
              \T     cas v 12-hodinovem HH:MM:SS formatu
              \@     cas v 12-hodinovy am/pm formatu
              \u     jmeno uzivatele ktery prave  ted bash pouziva
              \v     verze bash
              \V     vydani bashe, verze a patchlevel
              \w     stejne jako `pwd`
              \W     the  basename  od `pwd`­
              \$     pokud effective UID je 0, pak #, pokud ne tak $
              \nnn   ASCII znak  ktery odpovida osmickove hodnote nnn
              \\    zpetne lomitko

Escape sekvence jsou ruzne pouzivany ve scriptech na formatovani a printovani ruznych veci, nevim, co vice bych k nim rekl. Snad jen ze je pouzijeme v mojich budoucich clancich o tvoreni .bashrc

0x06 :: Arrays
Arrays, cesky tedy pole jsou jednim z imho mene vyuzivanych moznosti v bash scriptingu, ale i tak se vam muzou nekdy urcite budou hodit.
Nasleduje velmi dlouhy priklad ve kterem je vse vysvetleno:

#!/bin/bash

area[11]=23     #Takhle vlozime jednu vec do pole
area[13]=37
area[51]=UFO

echo -n "area[11] = "
echo ${area[11]}  # {} jsou potreba

echo -n "area[13] = "
echo ${area[13]}

echo "Obsah area[51] je ${area[51]}." #vypis obsahu pole

echo -n "area[43] = "     #nacteni pole do ktereho nic nevkladame
echo ${area[43]}
echo "(area[43] neni urcena!!)"

echo

area[5]=`expr ${area[11]} + ${area[13]}`     #secteme dve pole a ulozime do tretiho
echo "area[5] = area[11] + area[13]"
echo -n "area[5] = "
echo ${area[5]}

area[6]=`expr ${area[11]} + ${area[51]}` #nebude fungovat protoze pridavani integeru do retezce neni povoleno
echo "area[6] = area[11] + area[51]"
echo -n "area[6] = "
echo ${area[6]}

echo; echo; echo

area2=( nula jedna dva tri ctyri )  #I takhle muzeme do pole vlozit veci

echo -n "area2[0] = "
echo ${area2[0]}
# Vybirani veci z poli startuje od 0, tedy area2[0] vybere PRVNI prvek pole

echo -n "area2[1] = "
echo ${area2[1]}

echo; echo; echo

area3=([17]=sedmnact [24]=ctyriadvacet) #ale i takhle muzeme do pole vlozit veci

echo -n "area3[17] = "
echo ${area3[17]}

echo -n "area3[24] = "
echo ${area3[24]}

0x07 :: Requiem
Tak je zas dalsi dil za nami, doufam ze jste si uzili tak jako ja pri jeho psani :P Bohuzel, fajl je dosti dlouhy, takze barvicek a funkci se dockate priste! :] Dobereme take nejake veci, ktere jsem zapomnel zminit, take uvedu nekolik jednoduchych i tezsich scriptu na ukazku, a prejdeme na awk a sed, jedny z nejdulezitejsich veci v bashi. Jako vzdy, dotazy a pripominky na admin@tkroupa.net, flame do /dev/null a catujte urandom

Komentáre

Voľby prehliadania komentárov

Vyberte si, ako chcete zobrazovať komentáre a kliknite na "Uložiť zmeny".

br

Tie br na konci riadko sú len u mňa, alebo . . .

Obrázok používateľa %user

heh:) --- Kubuntu user #8067

heh:)
---
Kubuntu user #8067 || thomm.yw.sk

Obrázok používateľa %user

duh.... upravim

duh.... upravim asap
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-

Zone-h.org staff member
Soom.cz staff member
Slackware user

Voľby prehliadania komentárov

Vyberte si, ako chcete zobrazovať komentáre a kliknite na "Uložiť zmeny".