Bash Subshells

Bash Subshells



Niekedy to vyžaduje spustenie jedného alebo viacerých príkazov alebo skriptov na pozadí. Túto úlohu je možné vykonať zapísaním všetkých príkazov alebo skriptov do súboru skriptu a spustením súboru pomocou znaku ampersand (&) alebo spustením príkazov alebo skriptov do podshell z aktuálneho shellu. Subshell je možné použiť na spustenie viacerých príkazov alebo skriptov uzavretím znaku $() alebo backticks (`). Metódy používania Bash subshell sú uvedené v tomto návode.

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.