szkripteket a Linux operációs rendszer

Ha tud parancsokat egy Linux shell, írhat héjprogramokat Bourne (bash). A script - több parancs a fájlban tárolt, a shell parancsokat olvas a fájlból, mint ha a beírt parancsok a terminálról.







Mint minden program Unix rendszerek, szükség van egy sor bitet a szkript fájlt, de akkor is meg az olvasott biteket. Ez a legegyszerűbb módja, hogy ezt:

Linux shell script alapjai

A teszt a parancsot, akkor a Linux telepítéséhez a számítógépen vagy egy szerver, vagy akár egy VPS. Minden Bourne shell script kell kezdeni a következő sort, ami azt jelenti, hogy a program / bin / sh parancsokat futtat egy szkriptet:

Győződjön meg arról, hogy az elején a fájl nincs szóköz. Tudod, hogy egy listát az összes parancsot szeretné átadni a végrehajtás a héj miután a #! / Bin / sh. Itt van egy nagyon egyszerű példa:

#! / Bin / sh
#
# Print valamit, majd futtassa ls
echo Körülbelül fut az ls parancs. ls

Miután létrehoztuk a forgatókönyvet, és beállításával jogosultságokat, akkor a szkript futtatásához helyezve egy script fájlt könyvtárak egyikében, majd futtasd le a szkriptet a parancssorból. Vagy lehet futtatni ./script, ha a script található ugyanabban a könyvtárban, ahol éppen dolgozik.

héjprogramokon korlátozások

Tartsd szemmel a mérete a szkripteket. Bash script nem kell nagyon nagy (bár akkor biztosan találkozott töltött idő alatt ezek a szörnyek).

idézve állandók

Constant - egy string, hogy a héj nem kell változtatni, ha mozog a parancssorban. Hogy hol a konstans hasznos lehet, ha egy olyan példája, hogy a Bash shell általában terjed * az összes fájl és könyvtár az aktuális könyvtárban, majd átadja ezeket az elemeket az aktuális parancssor. Ha csak azt kívánja egy csillag (*) nem használja a parancsot grep, és más programok használata a hagyományos: a kifejezés, hogy speciális jelöléssel megkerülése állandó *.

A legegyszerűbb módja, hogy a héj nem érintette a vonalat, hogy magába zárja a teljes karakterláncot aposztrófok. Itt egy példa a grep és a *.

grep 'r. * t' / etc / passwd

Minden karakter között helyezkedik el a két szimpla idézőjelek, szóközökkel alakítjuk egyetlen állandó. Ebből következően az alábbi parancs nem fog működni, mert kéri a grep parancs, hogy keressen egy húr r * t / etc / passwd a szabványos kimenet (mert csak egy paraméter van megadva) .:

grep 'r. * t / etc / passwd'

Dupla idézőjelek ( „) dolgoznak, valamint egységes, kivéve, hogy a Bash valamennyi változókat, amelyek belsejében található idézőjelben, akkor nem vonatkozik a belső változók egyszeres idézőjelek. Láthatjuk a különbséget a következő parancs futtatásával és cserélje ki a dupla idézőjel egyszeres, indítsa újra.

echo "Nincs * az én útvonal: $ PATH"

A fő trükk ha állandók a Bourne shell - az átviteli állandó aposztrófok csapat. Megteheti ezt azáltal, hogy egy backslash előtt egyetlen idézet:

echo I don \ „t, mint a fájások belsejében shell script.

És az idézet, és backslash kívül kell lennie bármely két aposztrófokra. Vonalak, mint a * don \ „t eredményez szintaktikai hiba. Ugyanakkor furcsa módon, bezárhatja az aposztróf jelet belső idézőjel, mint a következő példában (a kimenet megegyezik az előző parancsot):







echo „Nem szeretem összehúzódások belsejében shell script.”

Különleges változók Linux shell

A legtöbb shell script megérti a parancssori paraméterek, és kölcsönhatásba lépnek a csapatok, hogy indítson. Ahhoz, hogy írja meg a szkript egyszerű parancsokat listákat rugalmasabb programokat, meg kell tudni, hogyan kell használni speciális változó Bourne Shell tolmács. A speciális változók nem sokban különbözik bármely más shell változókat, de nem tudja megváltoztatni az értékét az adott speciális változókat.

Miután elolvasta a következő néhány fejezet van, akkor meg fogja érteni, hogy miért a shell script halmozódnak sok speciális karakterek írása után. Ha próbálják megérteni az egyik szkripteket és az arc egy vonal, amely úgy néz ki, teljesen érthetetlen, szétszedni részein.

$ 1, $ 2, ...
$ 1, $ 2, és minden változót, az úgynevezett pozitív egész szám nem nulla értékeket tartalmazó szkript vagy érveket paramétereket. Tegyük fel, hogy ez a szkript hívják pshow:
#! / Bin / sh
echo Első érv: $ 1
echo Harmadik érv: $ 3

Run [pshow egy kettő három] meghozta a következő kimenetet:

Első érv: egy harmadik érv: három

Beépített műszak shell parancsot használjuk nélkül indokolt változókat. Ez a parancs törli az első argumentum ($ 1) és előlegek érvek előre - azaz a 2 $ lesz $ 1, $ 3 lesz 2 $.

Tegyük fel, hogy a következő script neve shiftex:

#! / Bin / sh
echo Argumentum: $ 1
műszak
echo Argumentum: $ 1
műszak
echo Argumentum: $ 1
műszak

Kezdet shiftex egy kettő három. köt

Érv: az egyik, Argumentum: két érv: három

$ #
A változó $ # számát tartalmazza átadott argumentumok a forgatókönyvet. Ez a változó különösen fontos, amikor elkezdi váltani ciklus válassza az érveket; amikor $ # 0, nem érv, így $ 1 üres.

# R / bin / sh
gs -q -dBATCH -dSAFER -s kimeneti_fájl = - = -sDevice pnmraw $ @

#! / Bin / sh
gs -q -Dbatch -dNOPAUSE -dSAFER \
-s kimeneti_fájl = - = -sDevice pnmraw $ @

Következtetés A $ @ idézőjelek ( „$ @”) kell alkalmazni a paramétereket, szóközzel elválasztva.

$ 0
$ 0 változó tartalmazza a nevét, a forgatókönyvet, és nagyon hasznos létrehozása diagnosztikai üzeneteket. Tegyük fel, hogy a forgatókönyvet kell jelenteni téves érvelés, amely tárolja a változó $ BADPARM. Kinyomtathatja diagnosztikai üzenet a következő sort, úgy, hogy a szkript nevét jelenik meg a hibaüzenet jelenik meg:

echo $ 0: rossz opció $ BADPARM

echo $ 0: rossz opció $ BADPARM 1> # 038; 2

$$
Változó tartalmaz $$ ID burkolat folyamat.

$?
A változó $? Ez tartalmazza az utolsó parancsot kódot, amely végrehajtja a shell. kód befejezése nagyon fontos, hogy ellenőrizzék a shell script, és később ismertetjük.

kilépési kódok

Amikor egy Linux program kilép, hagy maga után a teljes kód a szülő folyamat kezdődött a program. kódkiegészítés - ezt a számot, és néha nevezik hibakódot. Ha nulla kilépési kód (0), az azt jelenti, hogy a program működött gond nélkül. Azonban, ha a program egy hiba, akkor általában végül néhány nem nulla szám.

A kódex az utolsó parancs befejezése tartalmazza a speciális változó $. így ellenőrizni tudja, hogy magát a parancssorba:

$ A /> / dev / null
$ Echo $?
0
$ A / asdfasdf> / dev / null
Is: / asdfasdf: Nincs ilyen fájl vagy könyvtár
$ Echo $?
1

Látod, hogy a sikeres parancs visszaadja 0, míg a sikertelen parancs visszatérési 1. Ha kívánja használni a csapat kilépési kódot, akkor használja vagy tárolja a kódot közvetlenül a rajt után parancsot. Például ha fut egy harmadik echo $? után azonnal az előző parancsokat, az eredmény 0, mert a második a két csapat echo sikerül.

Ha írsz egy shell kódot, amely megszakítja a normális futása, akkor érdemes használni valami hasonló exit 1 átadni egység teljes kód vissza minden szülő folyamat fut a forgatókönyvet. Nem kell használni 1; Például, ha azt szeretnénk, akkor a különböző számokat különböző körülmények között.

Egyes programok, például a grep és a diff, használjon nem-zéró kilépési kód jelzi, normális körülmények között. Például, grep értéke 1, ha úgy találja, hogy egy megfelelő mintázat a bemenetét, és 0 - ha azt állapítja meg. Ebben az esetben nem nulla kilépési kód - ez nem hiba. Ezek a parancsok használja a másik kilépési kódok hiba: grep és diff alkalmazás 2 valós problémákat. Ha úgy gondolja, hogy a program egy egyéni kódot befejezését, olvassa el a man oldalt. A kilépési kódot általában nyilvánosságra a DIAGNOSZTIKA szakasz.

VPS / VDS 389 p. által RigWEB.RU beadásával




Kapcsolódó cikkek