Hogyan adhatom le az érvet a bash scriptben?

How Do I Pass Argument Bash Script



A Linux Mint 20 felhasználók többsége elakad, amikor érvet ad át egy bash szkriptben. Az argumentumokat bármely bash parancsfájlhoz továbbíthatja, amikor végrehajtásra kerül. Számos egyszerű és hasznos módszer létezik az érvek átadására egy bash parancsfájlban. Ebben a cikk útmutatóban tájékoztatunk néhány nagyon egyszerű módszerről az érvek átadására és használatára a bash szkriptekben.

Érvek átadása alapértelmezett változók használatával:

Hozzon létre egy új fájlt bármilyen névvel az érintőparancs segítségével, pl. File.sh.







$érintésfájl név



Nyissa meg ezt az újonnan létrehozott fájlt, és adjon hozzá néhány bash szkriptet. Hozzáadtam néhány alapértelmezett változót, pl. 1 USD, 2 USD és 3 USD ennek megfelelően. Bármilyen argumentumot is továbbítanak a terminálon, a megadott változók tárolják.







Ezt a fájlt a ./ paranccsal kell futtatnia, majd néhány érvet. Amint a képen látható, hogy amikor átadtam az érveket, hiba lép fel: Engedély megtagadva. Ennek az az oka, hogy ez a fájl nem rendelkezik végrehajtási jogokkal.

$./fájlnév argumentum1 argumentum2 argumentum

Tehát a végrehajtási jogok megadásához ehhez a fájlhoz használja a sudo chmod parancsot.



$sudo chmod+x fájlnév

Most futtassa újra a fájlt ugyanazzal a fenti paranccsal. Ezúttal különböző érveket hoztam fel. Látni fogja, hogy az újonnan átadott argumentumok az alapértelmezett változókban vannak tárolva.

A Shell szkript nevének átadása érvként:

Most ugyanazt a régi file.sh fájlt használva, némi változtatással az alapértelmezett változóiban. A $ 0 változót hozzá kell adnia a szkripthez az ábrán látható módon.

Ugyanazon ./ shell script parancs futtatásakor a shell parancsfájl neve, pl. A ./filename argumentumként a $ 0 változóban lesz tárolva.

Érvek átadása tömbként a változóknak:

Ugyanazzal a file.sh fájllal kezdve néhány sort kell hozzáadnia a régi parancsfájlhoz. Deklaráljon egy tömb nevű változót. Adjon hozzá egy alapértelmezett változót [email protected], amely a felhasználó által megadott argumentumokat tömbként tárolja. Ezeket az argumentumokat változó tömbbe elemezzük. Az utolsó sorban a változótömb összes argumentuma megjelenik az indexszám szerint rendezve.

Futtassa a ./ shell parancsfájlt. Látni fogja, hogy megjeleníti a tömbként tárolt argumentumokat vagy értékeket az [email protected] változó tömbbe elemzett elemében, de nem a shell e -parancsfájl nevét a második echo utasításban. A következő kimenet lesz.

$./fájlnév argumentum1 argumentum2 argumentum

Ugyanazt a fájlt használja ugyanazzal a szkripttel. Csak távolítsa el a $ {array [3]} elemet az utolsó sorból, amint az a képen látható.

A ./ parancs végrehajtása után hasonló kimenetet fog látni, mint a fenti példában, változtatás nélkül.

Ugyanezt az eredményt akkor is elérheti, ha a bash szkript utolsó sorát egyetlen szóval helyettesíti. Csak fel kell vennie az [email protected] -ot az echo utasításba, és megjeleníti az ebben a változó tömbben található érveket.

Tehát a ./ parancs ismételt futtatásával ugyanazokat az eredményeket kapja.

Ellenőrizze az elfogadott érvek teljes számát:

Éppen ellenkezőleg, ha tudni szeretné a felhasználó által átadott érvek teljes számát, akkor azt is megteheti. Ebből a célból csak ki kell cserélnie az [email protected] helyett $# in echo.

Ismét végrehajtva a ./ parancsot, most látni fogja a szkripthez továbbított érvek teljes számát. Esetünkben 3 érv kerül átadásra értékként.

Az érvek soronkénti kimenetének létrehozása:

Hozzon létre egy új test.sh fájlt a saját könyvtárban. Adja hozzá a bash szkriptet az ábrán látható módon.

Most futtassa ugyanazt a régi parancsot különböző argumentumokkal. Először is látni fogja a hibát: Engedély megtagadva.

Futtassa a chmod parancsot a fájl sudo jogosultságainak megadásához. Ezt követően futtassa újra a ./ shell script parancsot. És megkapja az argumentumok soronkénti rendezett kimenetét.

A változó korlátozása az Argumentumszám segítségével:

Ha korlátozni szeretné a változót az indexszám használatával, akkor nagyon könnyen megteheti. Adjon hozzá göndör zárójeleket a $ jel után, és adja hozzá az argumentumindex számát, amelyet más argumentumok előtt szeretne megjeleníteni.

Ha a felhasználók által megadott érvek kisebbek, mint a limitváltozóban megadott indexszám, akkor üres argumentumértéket kap. Példaként 4 érvet adtam meg, de megadtam a megjelenítendő 05 argumentum értékét. Ebben a helyzetben a változó üresen jelenik meg, mert az ötödik argumentum nem teljesült.

De ha a parancsban megadja az azonos vagy több argumentumot, akkor az eredmény az ábrán látható módon jelenik meg.

Konkrét értékérvek ellenőrzése:

Hozzon létre egy új fájlt a Check.sh névvel a saját könyvtárában. Adja hozzá ugyanazt a bash -szkriptet, mint az alábbi képen. Ebben a szkriptben van egy változó, amely tárolja a felhasználó által megadott argumentumértéket. Ezután van egy if utasításunk, amely ellenőrzi, hogy az argumentum értéke megegyezik -e vagy sem. Ha az argumentum értéke megegyezik a zárójelben megadott értékkel, akkor az első echo utasítás lesz végrehajtva. Ha az érték nem egyezik, akkor a második echo utasítás lesz végrehajtva.

Amikor futtatjuk a shell script parancsot, hiba lép fel. A chmod parancs használatával kijavíthatjuk ezt a hibát.

Ezt követően hajtsa végre az adott fájl shell parancsfájlját valamilyen argumentumértékkel. Esetünkben az Aqsa -t adtuk meg argumentumértékként, amely megegyezik a zárójelben megjelenített értékkel. Tehát a bash parancsfájl végrehajtja az első echo utasítást az ábrán látható módon.

Másrészt, ha megadja a különböző argumentumértékeket a shell parancsfájlban, akkor megjelenik a másik echo utasítás. Itt Rimsha -t adtam hozzá argumentumértékként, amely eltér az if utasításban megadott értéktől. Tehát a bash script végrehajtja a második echo utasítást.

Következtetés:

Remélem, hogy ez az útmutató kellőképpen segített abban, hogy erősen tudja kezelni az argumentumok alapértelmezett változókhoz való továbbítását, az argumentumérték tömbként történő átadását egy változónak, az átadott argumentumok teljes számát, az argumentumok soronkénti kimenetét, az argumentum korlátozását. kimenet az indexszám használatával, az adott érték argumentumának ellenőrzése és még sok más.