Rôzne príklady Subshell
Rôzne spôsoby spustenia skriptu v subshell sú uvedené v tejto časti tutoriálu.
Príklad 1: Spustite podshell pomocou jednoduchej a dvojitej ponuky
Vytvorte súbor Bash pomocou nasledujúceho skriptu, ktorý vytlačí aktuálny dátum a čas. Ďalej sa premenná $strVal vytlačí vložením skriptu subshell do jednoduchých a dvojitých úvodzoviek.
#!/bin/bash
#Vytlačte príkaz `date` v podshell
ozvena 'Dnes je „dátum“. '
#Definujte reťazcovú premennú
strVal = 'Bash Subshell'
# Vytlačte premennú v podshell pomocou jednoduchých úvodzoviek
ozvena 'Výstup jednoduchých úvodzoviek:' '$(echo $strVal)'
#Vytlačte premennú v podshell pomocou dvojitých úvodzoviek
ozvena 'Výstup dvojitých úvodzoviek:' ' $(echo $strVal) '
Po vykonaní skriptu sa zobrazí nasledujúci výstup. Skript subshell sa vytlačí ako reťazec, keď je uzavretý v jednoduchých úvodzovkách. Skript subshell sa spustí, keď je uzavretý do dvojitých úvodzoviek:
Príklad 2: Vyhľadajte všetky súbory konkrétneho rozšírenia pomocou subshell
Vytvorte súbor Bash pomocou nasledujúceho skriptu, ktorý prevezme príponu súboru ako vstup od používateľa. Ďalej sa v podshell vykoná príkaz „ls“, aby sa vyhľadali všetky súbory s touto konkrétnou príponou.
#!/bin/bash
ozvena -n 'Zadajte názov prípony súboru:'
# Vezmite názov prípony súboru, ktorý sa bude hľadať
čítať ext
# Skontrolujte vstupnú hodnotu
ak [ [ $ext == '' ] ] ; potom
#Vytlačte chybovú správu
ozvena 'Nie je dané žiadne predĺženie.'
inak
ozvena 'Názvy súborov s $ext rozšírenie:'
#Vytlačte všetky názvy súborov s danou príponou
ozvena ' $( echo `ls *.$ext` ) '
byť
Nasledujúci výstup sa zobrazí po vykonaní skriptu so vstupom „txt“. Podľa výstupu existujú v aktuálnom umiestnení tri textové súbory:
Po vykonaní skriptu s prázdnou hodnotou sa zobrazí nasledujúci výstup:
Príklad 3: Vykonajte aritmetický výraz v subshell
Vytvorte súbor Bash pomocou nasledujúceho skriptu, kde sa premenná s rovnakým názvom používa v hlavnom prostredí a v podshell. Aritmetická operácia je definovaná v hlavnom shellu a subshell.
#!/bin/bash#Definujte rodičovskú premennú shellu
číslo = 10
#Vytlačte výsledok na základe premennej nadradeného shellu
( ( výsledok = $číslo + 5 ) )
ozvena 'Súčet $číslo +5= $výsledok '
#Vytvorte premennú subshell s rovnakým názvom ako nadradený shell
( číslo = dvadsať ; ( ( výsledok = $číslo + 10 ) ) ; ozvena 'Súčet $číslo +5= $výsledok ' )
#Znova vytlačte výsledok na základe premennej nadradeného shellu
ozvena 'Súčet $číslo +5= $výsledok '
Po vykonaní skriptu sa zobrazí nasledujúci výstup. Prvý a posledný výstup zobrazuje výsledok hlavného shellu. Druhý výstup zobrazuje výsledok subshell. Premenná hlavného shellu nie je modifikovaná premennou subshell:
Príklad 4: Vykonajte viacero príkazov v podshell
Vytvorte súbor Bash pomocou nasledujúceho skriptu, ktorý odošle výstup príkazu „echo“ do príkazu „sed“, ktorý nahradí zodpovedajúcu hodnotu reťazca iným reťazcom. Výstupom príkazu „echo“ je „JavaScript“. Táto hodnota sa teda porovnáva s „Java“ a „JavaScript“. Ak sa nájde zhoda, zhodné reťazce sa nahradia reťazcom „Typ“.
#!/bin/bash#Definujte hodnotu reťazca
strVal = 'JavaScript'
#Vytlačte pôvodnú hodnotu reťazca
ozvena 'Hodnota reťazca: $strVal '
#Vytlačte hodnotu subshell
ozvena -n 'Hodnota podshell: '
ozvena ' $(echo $strVal | sed 's|Java|Typ JavaScriptu|') '
Po vykonaní skriptu sa zobrazí nasledujúci výstup. Podľa výstupu je reťazec „Java“ nahradený reťazcom „Typ“. Výstupom subshell je „JavaScript TypeScript“:
Záver
Jeden alebo viac príkazov alebo skriptov je možné vykonať pomocou subshell bez ovplyvnenia hlavného shellu. Účely použitia subshell sú vysvetlené v tomto návode na viacerých príkladoch. Rôzne typy úloh, ako je vyhľadávanie v súboroch, výpočet súčtu čísel, nahradenie reťazcov atď., sú v uvedených príkladoch vykonávané subshellom. Koncept používania subshell je riadne demonštrovaný a noví používatelia Bash budú teraz môcť používať subshell po prečítaní tohto tutoriálu.