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
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/bashná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/bashpro dirname v$(ls -d * /)
dělat
vyhodil '$ dirname'
Hotovo
Spusťte skript.
$bashcmdsub2.shVý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/bashná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.txtTady, 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: