Jak mohu předat argument ve skriptu Bash?

How Do I Pass Argument Bash Script



Většina uživatelů Linux Mint 20 se ocitla zaseknutá při předávání argumentu v bash skriptu. Argumenty můžete předat libovolnému skriptu bash, když je spuštěn. Existuje několik jednoduchých a užitečných způsobů, jak předat argumenty ve skriptu bash. V tomto průvodci článkem vám dáme vědět o několika velmi snadných způsobech předávání a používání argumentů ve vašich bash skriptech.

Předávání argumentů pomocí výchozích proměnných:

Pomocí příkazu touch vytvořte nový soubor s libovolným názvem, např. File.sh.







$doteknázev souboru



Otevřete tento nově vytvořený soubor a přidejte do něj nějaký bash skript. Přidal jsem některé výchozí proměnné, např. Následně $ 1, $ 2 a $ 3. Jakékoli argumenty budou předány terminálu, budou uloženy v uvedených proměnných.







Tento soubor musíte spustit pomocí příkazu ./ následovaného několika argumenty. Jak vidíte na obrázku, když jsem předal argumenty, došlo k chybě: Oprávnění odepřeno. Důvodem je, že tento soubor nemá práva na spuštění.

$./název souboru argument1 argument2 argument

Chcete -li tomuto souboru udělit práva ke spuštění, použijte k tomu příkaz sudo chmod.



$sudo chmod+x název souboru

Nyní znovu spusťte soubor pomocí stejného výše uvedeného příkazu. Tentokrát jsem uvedl různé argumenty. Uvidíte, že nově předané argumenty jsou uloženy ve výchozích proměnných.

Předání názvu skriptu Shell jako argumentu:

Nyní pomocí stejného starého souboru file.sh s malou změnou jeho výchozích proměnných. Do skriptu musíte přidat proměnnou $ 0, jak je znázorněno.

Při spuštění stejného příkazu ./ shell script název skriptu shellu, např. ./filename bude uložen v proměnné $ 0 jako argument.

Předávání argumentů jako pole proměnné:

Počínaje stejným souborem file.sh musíte do starého skriptu přidat další řádky. Deklarujte proměnnou s názvem pole. Přidejte výchozí proměnnou [email protected], která bude ukládat argumenty zadané uživatelem jako pole. Tyto argumenty budou analyzovány na proměnné pole. Poslední řádek zobrazí všechny argumenty pole proměnných seřazené podle indexového čísla.

Spusťte skript ./ shell. Uvidíte, že zobrazí argumenty nebo hodnoty uložené jako pole v [chráněné e -mailem] analyzované na proměnné pole, ale ne název skriptu shellu ve druhém příkazu echo. Budete mít následující výstup.

$./název souboru argument1 argument2 argument

Použijte stejný soubor se stejným skriptem. Stačí z posledního řádku odebrat pole $ {array [3]}, jak je na obrázku jasné.

Po provedení příkazu ./ uvidíte podobný výstup, jaký jste získali ve výše uvedeném příkladu, beze změny.

Stejného výsledku můžete dosáhnout také nahrazením posledního řádku skriptu bash jediným slovem. Stačí do příkazu echo přidat [email protected] a zobrazí argumenty přítomné v tomto poli proměnných.

Takže opětovným spuštěním příkazu ./ získáte stejné výsledky.

Zkontrolujte celkový počet předaných argumentů:

Naopak, pokud chcete znát celkový počet argumentů předaných uživatelem, můžete to také udělat. Za tímto účelem stačí nahradit [email protected] znakem $# v echu.

Znovu spustíte příkaz ./ Nyní uvidíte celý obrázek argumentů předaných skriptu. V našem případě jsou jako hodnota předány 3 argumenty.

Vytvořit výstup argumentů po řádcích:

Vytvořte nový soubor test.sh v domovském adresáři. Přidejte skript bash podle obrázku.

Nyní spusťte stejný starý příkaz s různými argumenty. Nejprve se zobrazí chyba: Oprávnění odepřeno.

Chcete -li tomuto souboru udělit oprávnění sudo, musíte spustit příkaz chmod. Poté znovu spusťte příkaz ./ shell script. A dostanete výstup argumentů seřazený po řádcích.

Omezení proměnné pomocí indexového čísla argumentu:

Pokud chcete proměnnou omezit pomocí jejího indexového čísla, můžete to udělat velmi snadno. Za znak $ přidejte složené závorky a přidejte indexové číslo argumentu, které chcete zobrazit před jinými argumenty.

Pokud jsou argumenty poskytnuté uživateli menší než číslo indexu uvedené v limitní proměnné, pak získáte prázdnou hodnotu argumentu. Jako příklad jsem uvedl 4 argumenty, ale dal jsem hodnotu argumentu 05, která se má zobrazit. V této situaci se proměnná zobrazí prázdná, protože nebyl předán pátý argument.

Ale když předáte stejný nebo větší počet argumentů v příkazu, dostanete hodnotu zobrazenou ve výsledku, jak je ukázáno.

Kontrola specifických hodnotových argumentů:

Vytvořte ve svém domovském adresáři nový soubor s názvem Check.sh. Přidejte stejný bash skript, jak je znázorněno na obrázku níže. V tomto skriptu máme proměnnou var pro uložení hodnoty argumentu předané uživatelem. Pak máme příkaz if, který zkontroluje, zda je hodnota argumentu shodná nebo ne. Pokud se hodnota argumentu shoduje s hodnotou uvedenou v závorkách, provede se první příkaz echo. Pokud se hodnota neshoduje, provede se druhý příkaz echo.

Když spustíme příkaz shellového skriptu, vyvolá to chybu. Pomocí příkazu chmod můžeme tuto chybu opravit.

Poté spusťte skript prostředí pro konkrétní soubor s nějakou hodnotou argumentu. V našem případě jsme poskytli Aqsa jako hodnotu argumentu, která je stejná jako hodnota zobrazená v závorkách. Skript bash tedy provede první příkaz echo, jak je znázorněno.

Na druhou stranu, pokud ve skriptu prostředí zadáte různé hodnoty argumentů, zobrazí se další příkaz echo. Zde jsem přidal Rimsha jako hodnotu argumentu, která se liší od hodnoty uvedené v příkazu if. Takže bash skript spustí druhý příkaz echo.

Závěr:

Doufám, že vám tento průvodce dostatečně pomohl mít silnou přilnavost k předávání argumentů výchozím proměnným, předávání hodnoty argumentu jako pole proměnné, získání celkového počtu předaných argumentů, výstupu argumentů řádek po řádku, omezení argumentu výstup pomocí indexového čísla, kontrola argumentu konkrétní hodnoty a mnoho dalších.