logo

Jak předat a analyzovat argumenty a parametry skriptu Bash pro Linux

Analýza a předávání argumentů do skriptů bash / shell skriptů je velmi podobné způsobu, jakým předáváme argumenty funkcím ve skriptech Bash. Uvidíme skutečný proces předávání argumentů skriptu a také se podíváme na způsob přístupu k těmto argumentům uvnitř skriptu.

seznam náboženství

Předávání argumentů před spuštěním

Parametry můžeme předat hned za jménem skriptu při spuštění příkazu bash interpreter. Do souboru můžete předat parametry nebo argumenty. Stačí příkaz pro normální spuštění skriptu přidáním hodnoty parametrů přímo do skriptu. Každý parametr je hodnota oddělená mezerami, která se předá skriptu shellu.

bash scriptname.sh>

Výše uvedený příkaz pouze spustí skript bez předávání parametrů.



Zatímco příkaz níže předá argumenty skriptu.

bash scriptname.sh parameter1 parameter2 parameter3 nth-parameter>

Spuštění bash skriptu s předáním parametrů

Výše uvedený snímek obrazovky zobrazuje parametry předané skriptu, jak to uděláme, což vysvětlíme v další části. Ale právě teď vidíme, že jsme předali parametry zvenčí skriptu pomocí proměnných prostředí bash. Můžete dokonce použít řetězce a další datové typy, ale dejte si pozor na mezery. Bílé místo učiní z proměnné samostatný parametr. Zejména u řetězců dbejte na to, abyste je přísně obklopili uvozovkami.

Detekce argumentů příkazového řádku

Nyní uvidíme, jak přistupujeme k těmto parametrům uvnitř skriptu. Použijeme počet předávaných parametrů v pořadí, tj. pro první předané parametry analyzujeme (zpřístupníme) parametr pomocí jako proměnné. První parametr je uložen v proměnné . Kromě toho můžete tuto proměnnou přiřadit jakékoli jiné uživatelem definované proměnné, kterou chcete. Pro předaný n-tý parametr můžete použít $n pro přístup k tomuto konkrétnímu parametru. Zde název proměnné začíná 1, protože název souboru/scriptu je 0. parametr. Pokud máte více než 9 parametrů, ujistěte se, že kolem čísla používáte { }, protože bez závorky, bash uvidí pouze jako a vyloučí 0, takže místo 10 $ použijte a tak dále.

#!/bin/bash echo '1st parameter =  ' echo '2nd Parameter =  '>

Výše uvedený skript může přistupovat k parametrům z příkazového řádku/shell pomocí pozičních parametrů, které jsou 1, 2, 3 atd.

Přístup k argumentům ze skriptu.

Jak můžete vidět, použili jsme {} pro přístup k číslům proměnných parametrů od 10 výše. Skript lze použít pro cykly a cykly while k iteraci parametrů, ale o tom budeme diskutovat v dalších částech.

Přiřadit poskytnuté argumenty k proměnné Bash

Můžeme jej také přiřadit k jiným uživatelským proměnným, aby byl skript dynamičtější a tvaroval jej podle potřeb. Ačkoli výše uvedený skript při spuštění vypíše pouze dva parametry, jistě můžete přistupovat k více parametrům pomocí proměnné jako pořadí parametrů v číslech. Skript může přistupovat k pozičním proměnným z příkazového řádku a používat je na požadovaných místech, kdekoli je to potřeba ve skriptu.

#!/bin/bash a= b= p=$(($a*$b)) echo 'The product of $a and $b = $p'>

Přiřadit poskytnuté argumenty k proměnné Bash

Výše uvedený skript přistupuje k pozičním parametrům, tj. a předaným do skriptu, a ukládá uživatelem definované proměnné, aby k nim měl později přístup a podle toho je upravoval. Můžeme také přistupovat k dalším parametrům pomocí iteračních metod, jak uvidíme v nadcházejících částech.

Máme také možnost zkontrolovat všechny parametry NULL nebo prázdné parametry předané pomocí parametrů -z nebo -n. Z toho můžeme ověřit, zda byly parametry předány nebo ne.

#!/bin/bash if [[ -z  ]]; then echo 'No parameter passed.' else echo 'Parameter passed = ' fi>

Kontrola, zda byly nebo nebyly předány poziční parametry.

Pomocí tohoto skriptu můžeme zjistit, zda byly předány nějaké poziční parametry nebo nebylo předáno nic. Parametr -z kontroluje, zda v BASH nejsou žádné proměnné NULL nebo neinicializované. Parametr -z vrátí hodnotu true, pokud je předaná proměnná NULL nebo neinicializovaná. K detekci předávaných parametrů tedy můžeme použít základní příkazy If-else.

javascriptový víceřádkový řetězec

Můžeme také použít parametr -n, který vrátí true, pokud nejsou předány žádné parametry, takže musíme použít ! stav zvrátit.

Takto:

#!/bin/bash if [[ ! -n  ]]; then echo 'No parameter passed.' else echo 'Parameter passed = ' fi>

Tento skript také poskytne stejný výstup, ale místo -z používáme parametr -n.

Čtení více argumentů pomocí smyčky For nebo While

Můžeme použít @ variable pro přístup ke každému parametru předávanému skriptu přes příkazový řádek. Je to speciální proměnná, která obsahuje pole proměnných v BASH. V tomto případě jej používáme samostatně, takže obsahuje pole předávaných pozičních parametrů. Můžeme jej použít k iteraci přes parametry předávané pomocí cyklů nebo cyklu while.

#!/bin/bash for i in $@ do echo -e '$i
' done>

Použití smyček a proměnné @ pro přístup k parametrům jako prvkům pole.

Použili jsme cyklus for založený na rozsahu k iteraci, dokud nejsou prvky v poli @. Jednoduše iterujeme pole a vytiskneme prvek. Můžeme jej jednoduše přiřadit, upravit hodnoty a provést požadované změny parametrů a argumentů, abychom ze skriptu dosáhli požadovaného výsledku.

NEBO

Můžeme také vytisknout argumenty pomocí cyklu while a proměnných prostředí BASH.

turbo c++ ke stažení
#!/bin/bash i=$(($#-1)) while [ $i -ge 0 ]; do echo ${BASH_ARGV[$i]} i=$((i-1)) done>

Použití cyklu while k iteraci předávaných parametrů.

Používáme proměnnou „ # ‘, protože obsahuje počet předávaných parametrů. Inicializujeme počet parametrů a jeden odebereme, protože k jeho iteraci použijeme pole. Index pole tedy jako obvykle začíná od 0. Protože je toto pole inicializováno od posledního předávaného prvku nebo parametru, musíme čítač dekrementovat až na 0, abychom vytiskli každý parametr v pořadí, v jakém byl předán. Pro přístup k parametrům a vytištění jejich hodnoty jednoduše použijeme pole BASH_ARGV. Také při každé iteraci snižujeme hodnotu i- iterátoru nebo čítače o jednu pomocí aritmetických dvojitých závorek. Z toho jednoduše vytiskneme každý parametr předaný skriptu pomocí smyčky while, jak je znázorněno na výstupním snímku obrazovky.

Čtení s názvy parametrů

Použití getopts k analýze argumentů a parametrů

Můžeme použít program/příkaz getopts k analýze argumentů předávaných skriptu v příkazovém řádku/terminálu pomocí smyček a příkazů switch-case.

#!/bin/bash while getopts n:c: option do case '${option}' in n)nation=${OPTARG};; c)code=${OPTARG};; esac done echo 'Nation : $nation' echo 'code : $code'>

Použití getopts k analýze argumentů a parametrů

Pomocí getopts můžeme přiřadit poziční argumenty/parametry z příkazového řádku přímo proměnným bash. To nám umožňuje spravovat parametry pěkně a systematicky. Ve výše uvedeném skriptu jsme použili dva argumenty k uložení proměnných bash pomocí syntaxe getopts, smyček a příkazů switch-case.

Tisk hodnot všech argumentů

Argumenty předané skriptu můžeme vytisknout jednoduchou výkonnou proměnnou ‚@‘, která uchovává všechny předané parametry.

#!/bin/bash echo 'The arguments passed in are : $@'>

Tisk hodnot všech argumentů

Přístup k počtu předaných parametrů

Pro přístup k počtu parametrů předávaných z příkazového řádku můžeme také použít proměnnou ‚#‘. Proměnná # v podstatě obsahuje počet parametrů/argumentů, které jsou předány do skriptu.

#!/bin/bash echo 'The number of arguments passed in are : $#'>

Přístup k počtu předaných parametrů

Následoval proces a specifikace předávání a analýzy proměnných ve skriptu bash. Logika posouvání a provádění úprav proměnných je v rukou uživatele. Toto byla jen ukázka předávání a analýzy argumentů z příkazového řádku do skriptu, aby byly dynamičtější.