Výstup příkazu BASH do proměnné

Bash Command Output Variable

Na základě požadavků uživatele je třeba z terminálu spouštět různé typy příkazů bash. Když uživatel spustí jakýkoli příkaz z terminálu, pak zobrazí výstup, pokud neexistuje žádná chyba, jinak se zobrazí chybová zpráva. Někdy musí být výstup příkazu uložen v proměnné pro budoucí použití. K tomuto účelu lze použít funkci nahrazení příkazu shellu bash. V tomto kurzu je ukázáno, jak pomocí této funkce můžete do proměnné ukládat různé typy příkazů shellu.

proměnná= $(příkaz)
proměnná= $(příkaz [volba…]argument1 argumenty2 ...)
proměnná= $(/cesta/na/příkaz)

NEBO



proměnná=``příkaz``
proměnná=``příkaz [volba…]argument1 argumenty2 ...``
proměnná='/cesta/na/příkaz``

*** Poznámka: Při použití výše uvedených příkazů nepoužívejte mezeru před a za znaménkem rovnosti.



Výstup jednoho příkazu do proměnné

Příkazy Bash lze použít bez možnosti a argumentu pro příkazy, kde jsou tyto části volitelné. Následující dva příklady ukazují použití jednoduchého nahrazování příkazů.



Příklad č. 1:

bash ` datum` příkaz slouží k zobrazení aktuálního data a času. Následující skript uloží výstup ` datum` příkaz do $ dnešní datum proměnnou pomocí substituce příkazů.

$dnešní datum= $(datum)
$vyhodil 'Dnes je$ current_date'

Výstup:



Příklad č. 2:

`pwd` příkaz ukazuje cestu k aktuálnímu pracovnímu adresáři. Následující skript ukládá výstup `pwd` příkaz do proměnné, $ current_dir a hodnota této proměnné se vytiskne pomocí `ozvěna ' příkaz.

$current_dir=``pwd``
$vyhodil „Aktuální adresář je:$ current_dir'

Výstup:

Příkaz s volbou a argumentem

Možnost a argument jsou pro některé příkazy bash povinné. Následující příklady ukazují, jak můžete uložit výstup příkazu s volbou a argumentem do proměnné.

Příklad č. 3:

Bash ` toaleta příkaz se používá k počítání celkového počtu řádků, slov a znaků libovolného souboru. Tento příkaz používá -c, -w a -l jako možnost a název souboru jako argument pro generování výstupu. Vytvořte textový soubor s názvem ovoce.txt s následujícími daty k otestování dalšího skriptu.
ovoce.txt

ovoce.txt
Mango
oranžový
Banán
Hroznový
Guava
Jablko

Spuštěním následujících příkazů spočítejte a uložte celkový počet slov do souboru ovoce.txt soubor do proměnné, $ count_words a vytiskněte hodnotu pomocí ` echo` příkaz.

$count_words=``toaleta -vovoce.txt``
$vyhodil 'Celkem slov v fruit.txt je.'$ count_words'

Výstup:

Příklad č. 4:

`střih ' je další příkaz bash, který ke generování výstupu používá volbu a argument. Vytvořte textový soubor s názvem všední den.txt se sedmi dny v týdnu ke spuštění dalšího skriptu.

všední den.txt

pondělí
úterý
středa
Čtvrtek
pátek
sobota
Neděle

Vytvořte bash soubor s názvem cmdsub1.sh s následujícím skriptem. V tomto skriptu zatímco smyčka se používá ke čtení obsahu všední den.txt soubor řádek po řádku a přečtěte si první tři znaky každého řádku pomocí ` střih` příkaz. Po vyjmutí je hodnota řetězce uložena v proměnné $ den . Dále, Pokud se příkaz používá ke kontrole hodnoty $ den je ' Slunce' nebo ne. Výstup vytiskne „ Neděle je svátek „Pokud je podmínka pravdivá, jinak vytiskne hodnotu $ den .

cmdsub1.sh

#!/bin/bash
název souboru='weekday.txt'
zatímco čístčára;dělat
den=``vyhodil $ řádek | střih -C 1-3``
-li [ $ den=='Slunce' ]
pak
vyhodil „Neděle je svátek“
jiný
vyhodil $ den
být
Hotovo<$ název_souboru

Spusťte skript.

$kočkavšední den.txt
$bashcmdsub1.sh

Výstup:

Použití substituce příkazů ve smyčce

Výstup náhrady příkazů můžete uložit do libovolné proměnné smyčky, která je uvedena v následujícím příkladu.

Příklad č. 5:

Vytvořte soubor s názvem cmdsub2.sh s následujícím kódem. Tady, ` ls -d * / `Příkaz` se používá k načtení seznamu všech adresářů z aktuálního adresáře. Zde se používá smyčka For ke čtení každého adresáře z výstupu a jeho uložení do proměnné $ dirname který je vytištěn později.

cmdsub2.sh

#!/bin/bash
pro dirname v$(ls -d * /)
dělat
vyhodil '$ dirname'
Hotovo

Spusťte skript.

$bashcmdsub2.sh

Výstup:

Použití vnořených příkazů

Jak můžete použít více příkazů pomocí kanálu (|), je ukázáno v předchozím příkladu. Vnořené příkazy však můžete použít při nahrazování příkazů, kde výstup prvního příkazu závisí na výstupu druhého příkazu a funguje opačně než příkaz pipe (|).

Vnořená syntaxe příkazu:

kde=``příkaz1 ``příkaz``

Příklad č. 6:

Dva příkazy, ` vyhodil `a ' SZO `se v tomto příkladu používají jako vnořený příkaz. Tady, ` SZO `Nejprve se spustí příkaz`, který vytiskne informace o uživateli aktuálně přihlášeného uživatele. Výstup souboru ` SZO `Příkaz se spustí pomocí ' vyhodil `příkaz a výstup` vyhodil `uloží do proměnné $ var . Zde je výstup ` vyhodil `příkaz závisí na výstupu` SZO `příkaz.

$kde=``vyhodil``SZO``
$vyhodil $ var

Výstup:

Použití příkazové cesty

Pokud znáte cestu příkazu, můžete příkaz spustit zadáním cesty příkazu při použití nahrazení příkazu. Následující příklad ukazuje použití cesty příkazu.

Příklad č. 7:

'whoami' příkaz zobrazí uživatelské jméno aktuálně přihlášeného uživatele. Ve výchozím nastavení je tento příkaz uložen v / usr/ dopoledne/ složku. Ke spuštění spusťte následující skript whoami` příkaz pomocí cesty a uložit do proměnné, $ výstup, a vytiskněte hodnotu $ výstup .

$výstup= $(/usr/dopoledne/kdo jsem)
$vyhodil $ výstup

Výstup:

Použití argumentu příkazového řádku

Jako argument při nahrazování příkazů můžete použít argument příkazového řádku s příkazem.

Příklad č. 8:

Vytvořte bash soubor s názvem cmdsub3.sh s následujícím skriptem. ` základní jméno Zde se používá příkaz `k načtení názvu souboru z 2ndargument příkazového řádku a uložený v proměnné, $ název_souboru . Známe 1Svatýargument příkazového řádku je název prováděcího skriptu, který je označen $ 0.

#!/bin/bash
název souboru=``základní jméno 1 $``
vyhodil 'Název souboru je.'$ název_souboru. '

Spusťte skript s následující hodnotou argumentu.

$bashcmdsub3.sh Desktop/tepl/ahoj.txt

Tady, základní jméno cesty, Desktop/temp/hello.txt je ' ahoj.txt “. Takže hodnota $ název_souboru bude ahoj.txt .

Výstup:

Závěr:

V tomto kurzu jsou ukázána různá použití náhrad příkazů. Pokud potřebujete pracovat s více příkazy nebo závislými příkazy a dočasně uložit výsledek k provedení dalších úkolů později, můžete tuto funkci použít ve svém skriptu k získání výstupu.

Více informací ve videu: