Bash Subshells

Bash Subshells



Někdy to vyžaduje spouštění jednoho nebo více příkazů nebo skriptů na pozadí. Tento úkol lze provést zapsáním všech příkazů nebo skriptů do souboru skriptu a spuštěním souboru pomocí znaku ampersand (&) nebo spuštěním příkazů nebo skriptů do dílčího prostředí z aktuálního shellu. Subshell lze použít ke spouštění více příkazů nebo skriptů uzavřením s $() nebo backticks (`). Metody použití Bash subshell jsou uvedeny v tomto tutoriálu.

Různé příklady Subshell

V této části výukového programu jsou uvedeny různé způsoby provádění skriptu v podshell.

Příklad 1: Provedení dílčího shellu pomocí jednoduché a dvojité nabídky

Vytvořte soubor Bash pomocí následujícího skriptu, který vytiskne aktuální datum a čas. Dále se vytiskne proměnná $strVal tak, že se skript subshell uzavře do jednoduchých a dvojitých uvozovek.







#!/bin/bash

#Vytiskněte příkaz `date` v subshell

echo 'Dnes je 'datum' '

#Definujte řetězcovou proměnnou

strVal = 'Bash Subshell'

# Vytiskněte proměnnou v podshell pomocí jednoduchých uvozovek

echo 'Výstup jednoduchých uvozovek:' '$(echo $strVal)'

#Vytiskněte proměnnou v podshell pomocí dvojitých uvozovek

echo 'Výstup dvojitých uvozovek:' ' $(echo $strVal) '

Po provedení skriptu se zobrazí následující výstup. Skript subshell je vytištěn jako řetězec, když je uzavřen do jednoduchých uvozovek. Skript subshell se spustí, když je uzavřen do dvojitých uvozovek:





Příklad 2: Prohledejte všechny soubory konkrétní přípony pomocí subshell

Vytvořte soubor Bash pomocí následujícího skriptu, který převezme příponu souboru jako vstup od uživatele. Dále je v subshell spuštěn příkaz „ls“, který prohledá všechny soubory této konkrétní přípony.





#!/bin/bash

echo -n 'Zadejte název přípony souboru:'

# Vezměte název přípony souboru, který bude prohledán

číst ext

# Zkontrolujte vstupní hodnotu

-li [ [ $ext == '' ] ] ; pak

#Vytiskněte chybovou zprávu

echo 'Není poskytnuto žádné prodloužení.'

jiný

echo 'Názvy souborů s $ext rozšíření:'

#Vytisknout všechny názvy souborů s danou příponou

echo ' $( echo `ls *.$ext` ) '

být

Po provedení skriptu se vstupem „txt“ se objeví následující výstup. Podle výstupu existují v aktuálním umístění tři textové soubory:



Po provedení skriptu s prázdnou hodnotou se zobrazí následující výstup:

Příklad 3: Proveďte aritmetický výraz v podsložce

Vytvořte soubor Bash pomocí následujícího skriptu, kde je proměnná se stejným názvem použita v hlavním prostředí a v dílčím prostředí. Aritmetická operace je definována v hlavním a dílčím shellu.

#!/bin/bash

#Definujte nadřazenou proměnnou shellu

číslo = 10

#Vytiskněte výsledek na základě proměnné nadřazeného shellu

( ( výsledek = $číslo + 5 ) )

echo 'Součet $číslo +5= $výsledek '

#Vytvořte proměnnou subshell se stejným názvem jako nadřazený shell

( číslo = dvacet ; ( ( výsledek = $číslo + 10 ) ) ; echo 'Součet $číslo +5= $výsledek ' )

#Vytiskněte výsledek znovu na základě proměnné nadřazeného shellu

echo 'Součet $číslo +5= $výsledek '

Po provedení skriptu se zobrazí následující výstup. První a poslední výstup ukazují výsledek hlavního shellu. Druhý výstup zobrazuje výsledek subshell. Proměnná hlavního shellu není modifikována proměnnou subshell:

Příklad 4: Proveďte více příkazů v podshellu

Vytvořte soubor Bash pomocí následujícího skriptu, který odešle výstup příkazu „echo“ do příkazu „sed“, který nahradí odpovídající hodnotu řetězce jiným řetězcem. Výstup příkazu „echo“ je „JavaScript“. Tato hodnota je tedy porovnána s „Java“ a „JavaScript“. Pokud je nalezena shoda, odpovídající řetězce jsou nahrazeny řetězcem „Typ“.

#!/bin/bash

#Definujte hodnotu řetězce

strVal = 'JavaScript'

#Vytiskněte původní hodnotu řetězce

echo 'Hodnota řetězce: $strVal '

#Vytiskněte hodnotu subshell

echo -n 'Hodnota podslupky: '

echo ' $(echo $strVal | sed 's|Java|Typ JavaScriptu|') '

Po provedení skriptu se zobrazí následující výstup. Podle výstupu je řetězec „Java“ nahrazen řetězcem „Typ“. Výstup subshell je „JavaScript TypeScript“:


Závěr

Jeden nebo více příkazů nebo skriptů lze spustit pomocí subshell, aniž by to ovlivnilo hlavní shell. Účely použití subshell jsou vysvětleny v tomto tutoriálu na několika příkladech. Různé typy úloh, jako je prohledávání souborů, výpočet součtu čísel, nahrazování řetězců atd., jsou v uvedených příkladech prováděny pomocí subshell. Koncept použití subshell je řádně demonstrován a noví uživatelé Bash budou nyní moci používat subshell po přečtení tohoto tutoriálu.