Bash Subshells

Bash Subshells



Понякога това изисква да изпълните една или повече команди или скриптове във фонов режим. Тази задача може да бъде изпълнена чрез записване на всички команди или скриптове в скриптов файл и изпълнение на файла с помощта на амперсанд (&) или изпълнение на командите или скриптовете в подобвивката от текущата обвивка. Подобвивката може да се използва за изпълнение на множество команди или скриптове чрез ограждане с $() или обратните отметки (`). Методите за използване на Bash subshell са показани в този урок.

Различни примери за Subshell

Различните начини за изпълнение на скрипта в подобвивката са показани в тази част на урока.

Пример 1: Изпълнете подобвивката с помощта на единични кавички и двойни кавички

Създайте Bash файл със следния скрипт, който отпечатва текущите дата и час. След това променливата $strVal се отпечатва чрез затваряне на скрипта на subshell в единичните и двойните кавички.







#!/bin/bash

#Отпечатайте командата `date` в подобвивката

ехо 'Днес е `дата` '

#Дефиниране на низова променлива

strVal = 'Bash Subshell'

#Отпечатайте променливата в подобвивката, като използвате единични кавички

ехо „Резултатът от единични кавички:“ '$(echo $strVal)'

#Отпечатайте променливата в подобвивката, като използвате двойни кавички

ехо „Резултатът от двойни кавички:“ ' $(echo $strVal) '

След изпълнението на скрипта се появява следният изход. Скриптът на subshell се отпечатва като низ, когато е ограден с единични кавички. Скриптът на subshell се изпълнява, когато е ограден с двойни кавички:





Пример 2: Търсене във всички файлове с конкретното разширение с помощта на Subshell

Създайте Bash файл със следния скрипт, който приема файловото разширение като вход от потребителя. След това командата 'ls' се изпълнява в подобвивката, за да търси всички файлове с това конкретно разширение.





#!/bin/bash

ехо „Въведете името на файловото разширение:“

#Вземете името на файловото разширение, което ще се търси

Прочети вътр

#Проверете въведената стойност

ако [ [ $ext == '' ] ] ; тогава

#Отпечатайте съобщение за грешка

ехо „Не се дава удължаване.“

друго

ехо „Имена на файлове с $ext разширение:'

#Отпечатайте всички имена на файлове с даденото разширение

ехо ' $( ехо `ls *.$ext` ) '

бъда

Следният изход се появява след изпълнение на скрипта с входа „txt“. Според изхода съществуват три текстови файла в текущото местоположение:



Следното извеждане се появява след изпълнение на скрипта с празна стойност:

Пример 3: Изпълнете аритметичния израз в Subshell

Създайте Bash файл със следния скрипт, където променливата със същото име се използва в основната обвивка и подобвивката. Аритметичната операция е дефинирана в основната обвивка и подобвивката.

#!/bin/bash

#Дефинирайте родителска променлива на обвивката

номер = 10

#Отпечатайте резултата въз основа на променливата на родителската обвивка

( ( резултат = $номер + 5 ) )

ехо 'Сумата от $номер +5= $резултат '

#Създайте променлива на subshell със същото име на родителската обвивка

( номер = двадесет ; ( ( резултат = $номер + 10 ) ) ; ехо 'Сумата от $номер +5= $резултат ' )

#Отпечатайте отново резултата въз основа на променливата на родителската обвивка

ехо 'Сумата от $номер +5= $резултат '

След изпълнението на скрипта се появява следният изход. Първият и последният изход показват резултата от основната обвивка. Вторият изход показва резултата от подчерупката. Променливата на основната обвивка не се променя от променливата на подобвивката:

Пример 4: Изпълнение на множество команди в Subshell

Създайте Bash файл със следния скрипт, който изпраща резултата от командата „echo“ в командата „sed“, която замества съответстващата стойност на низ с друг низ. Резултатът от командата „echo“ е „JavaScript“. И така, тази стойност се сравнява с „Java“ и „JavaScript“. Ако бъде намерено съвпадение, съвпадащите низове се заменят с низа „Тип“.

#!/bin/bash

#Дефинирайте стойност на низ

strVal = 'JavaScript'

#Отпечатайте стойността на оригиналния низ

ехо „Стойност на низ: $strVal '

#Отпечатайте стойността на подобвивката

ехо 'Стойност на подобвивката: '

ехо ' $(echo $strVal | sed 's|Java|JavaScript Type|') '

След изпълнението на скрипта се появява следният изход. Според изхода низът „Java“ се заменя с низа „Тип“. Резултатът от подчерупката е „JavaScript TypeScript“:


Заключение

Една или повече команди или скриптове могат да бъдат изпълнени с помощта на подобвивката, без да се засяга основната обвивка. Целите на използването на подобвивката са обяснени в този урок с множество примери. Различни типове задачи като търсене във файлове, изчисляване на сумата от числа, замяна на низове и т.н. се изпълняват от подобвивката в дадените примери. Концепцията за използване на подобвивката е правилно демонстрирана и новите потребители на Bash вече ще могат да използват подобвивката, след като прочетат този урок.