(1) s1 = s2
(2) s1 != s2
(3) s1 < s2
(4) s1 > s2
(5) -n s1
(6) -z s1
(1) s1 azonos s2
(2) s1 nem azonos s2
(3) __TO-DO__
(4) __TO-DO__
(5) s1 nem üres (tartalmaz egy vagy több karkatert)
(6) s1 üres
#!/bin/bash S1='string' S2='String' if [ $S1=$S2 ]; then echo "S1('$S1') nem azonos S2('$S2')vel" fi if [ $S1=$S1 ]; then echo "S1('$S1') azonos ('$S1') vel" fi
Szeretnék reagálni egy mail-ben kapott tanácsra melyben Andreas Beck javasolja a if [ $1 = $2 ] használatát
Ez nem egy tökéletes elképzelés mert a $S1 vagy $S2 üres reláciüs hibát eredményez. A x$1=x$2 vagy "$1"="$2" a jobb.
+
-
*
/
% (maradék képzés osztásnál)
-lt (<)
-gt (>)
-le (<=)
-ge (>=)
-eq (==)
-ne (!=)
A C programnyelvben lévő azonos értelmű relációs jelet zárójelbe tettem zárójelbe tettem.
Ezt a fejezetet Kees átdolgozása tette teljessé. (Ezúton is köszönöm...)
Néhány parancs az alábbiakból része az önálló programnyelvkenek. A következőkben ezeknek csak a lényegét tárgyaljuk. Részletes ismertetést a legcélravezetőbb a parancs manuál oldaláról szerezni.
sed (stream szerkesztő)
A sed nem interaktiv szerkesztő. A szerkesztés nem billetyűzetről közvetlenöl történik hanem a szerkesztési kívánalmakat rögzítjük A sed indításkor ezt kapja meg és a szerkesztendő állomány nevét. A sed elfogad szűrőfeltételelket is. Most lássunk néhány példát:
$sed 's/to_be_replaced/replaced/g' /tmp/dummy
A sed lecseréli a 'to_be_replaced' szöveget 'replaced' -re a /tmp/dummy állomány tartalmában. Az eredményt a szabványos kimeneten jeleníti meg (stdout -ez a terminál alapértelmezésben). Átirányjtható állományba a '> capture' sor végére írásával. Ilyenkor a sed az eredményt a 'capture' nevű állományban rögzíti.
$sed 12,18d /tmp/dummy
A sed megjelenít minden sort a 12. és 18. közöttiek kivételével. (Az erdeti állományt nem változtatja).
awk (adatbázis kezelés, szöveg átalakítás és feldolgozás)
Számos változatban létezik az AWK programnyelv (legismerztebb a GNU gawk fordítója és felújítása a mawk). A működési elv egyszerű: Az AWK a definiált mintákat keresi és mindegyik talált mintára elvégzi előírt műveleteket.
Újabb teszt állományt készítek a következő tartalommal:
"test123
test
tteesstt"
$awk '/test/ {print}' /tmp/dummy
test123
test
Az AWK megnyijta /tmp/dummy állományt soronként a 'test' mintát keresi és a megjeleníti az ezt tartalmazó sorokat, mivel az előírt művelet a 'print' .
$awk '/test/ {i=i+1} END {print i}' /tmp/dummy
3
Ha több mintát keresünk, lecserélhetjük az aposztrófok közti szöveget a '-f file.awk' -ra. Így a file.awk-ban lévő összes minta kiértékelésre kerül.
grep (kiírja a mintát tartalmazó sorokat)
Az előző fejezetekben már találkoztunk néhány grep paranccsal, amely megjeleníti a mintát tartalmazó sorokat. A grep ezrenkívül többet is tud:
$grep "look for this" /var/log/messages -c
12
Az alábbi szöveg "look for this" 12 -szer fordul elő /var/log/messages állományban.
[oho ez példa csavaros, a /var/log/messages a címzett is :-)]
wc (sorok, szavak és karakterek darabszáma)
A következő példában az eredmény nem egészen felel meg a kérésnek. A dummy állomány következőt tartalmazta: "bash introduction howto test file".
$wc --words --lines --bytes /tmp/dummy
2 5 34 /tmp/dummy
A wc nem érvényesíti a paraméterek megadásának sorrendjét, ehelyett állandó sorrendet használ.
sort (szöveges állomány sorainak rendezése)
Ezúttal a dummy állomány tartalma a következő:
"b
c
a"
$sort /tmp/dummy
Ez lesz a kimeneten:
a
b
c
Ennél már egyszerűbben nem lehet :-) bc (egy számológép programnyelv) .
A bc parancssorból vár paramétereket (állomány bementet. Nem átirányítást ">" vagy továbbfeldolgozást "|"), de lehet felhasználó felületről is. Az alábbi bemutatóban lathatunk néhány parancsot. Célszerű a -q paraméter használata a bc bejelentkező üzenet lelkerüléséhez.
$bc -q
1 == 5
0
0.05 == 0.05
1
5 != 5
0
2 ^ 8
256
sqrt(9)
3
while (i != 9) {
i = i + 1;
print i
}
123456789
quit
tput (létrehoz egy terminált vagy terminál információs adatbázist)
Egy kis részlet a tput szolgáltatásaiból:
$tput cup 10 4
A készenléti jel a (y10,x4) pozisíóra állítása.
$tput reset
Képernyő törlés és a készenléti jel a (y1,x1) pozícióra áll. A terminál bal felső sarka a (y0,x0) pont.
$tput cols
80
Megjeleníti a terminál vízszintes karakter oszlopainak számát.
Célszerű bővebb ismeretséget kötni ezekkel a programokkal. Csuda dolgokat varázsolhatsz eszköztárukkal az egyszerű parancssoros terminálra.
[további példákat a manual oldalakon és a FAQ listákon találsz]