Изход на команда BASH към променливата

Bash Command Output Variable



От терминала трябва да се изпълняват различни видове команди bash в зависимост от изискванията на потребителя. Когато потребителят изпълни някаква команда от терминала, той показва изхода, ако няма грешка, в противен случай показва съобщението за грешка. Понякога изходът на командата трябва да се съхранява в променлива за бъдеща употреба. Функцията за подмяна на команда на Shell на bash може да се използва за тази цел. Как можете да съхранявате различни типове команди на обвивката в променливата с помощта на тази функция е показано в този урок.

променлива= $(команда)
променлива= $(команда [опция…]аргумент1 аргументи2 ...)
променлива= $(/път/да се/команда)

ИЛИ







променлива=команда
променлива=команда [опция…]аргумент1 аргументи2 ...
променлива=`/път/да се/команда

*** Забележка: Не използвайте интервали преди и след знака за равенство, когато използвате горните команди.



Единична команда изход към променлива

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



Пример №1:

bash ` дата` командата се използва за показване на текущата дата и час. Следният скрипт ще съхранява изхода на ` дата` команда в $ текуща дата променлива чрез използване на подмяна на команда.





$текуща дата= $(дата)
$изхвърлен 'Днес е$ current_date'

Изход:



Пример 2:

`pwd` командата показва пътя на текущата работна директория. Следният скрипт съхранява резултата от `pwd` команда в променливата, $ current_dir и стойността на тази променлива се отпечатва с помощта `echo` команда.

$current_dir=pwd
$изхвърлен „Текущата директория е:$ current_dir'

Изход:

Команда с опция и аргумент

Опцията и аргументът са задължителни за някои команди bash. Следващите примери показват как можете да съхранявате резултата от командата с опция и аргумент в променлива.

Пример#3:

Баш ` тоалетна команда се използва за преброяване на общия брой редове, думи и знаци на всеки файл. Тази команда използва -c, -w и -l като опция и име на файл като аргумент за генериране на изхода. Създайте текстов файл с име плодове.txt със следните данни за тестване на следващия скрипт.
плодове.txt

плодове.txt
Манго
Оранжево
Банан
Гроздов
Гуава
Apple

Изпълнете следните команди, за да преброите и съхраните общия брой думи в плодове.txt файл в променлива, $ count_words и отпечатайте стойността с помощта на ` ехо` команда.

$count_words=тоалетна плодове.txt
$изхвърлен „Общият брой думи в fruit.txt е$ count_words'

Изход:

Пример#4:

`изрязано` е друга команда bash, която използва опция и аргумент за генериране на изхода. Създайте текстов файл с име weekday.txt със седемседмични имена, за да стартирате следващия скрипт.

weekday.txt

Понеделник
Вторник
Сряда
Четвъртък
Петък
Събота
Неделя

Създайте bash файл с име cmdsub1.sh със следния скрипт. В този скрипт, докато цикъл се използва за четене на съдържанието на weekday.txt файл ред по ред и прочетете първите три знака от всеки ред, като използвате ` изрежете` команда. След изрязване стойността на низа се съхранява в променливата $ ден . След това, ако изразът се използва за проверка на стойността на $ ден е „ Слънце ' или не. Изходът ще отпечата „ Неделята е празникът „Когато, ако условието е вярно, в противен случай ще отпечата стойността на $ ден .

cmdsub1.sh

#!/bin/bash
име на файл='weekday.txt'
докато Прочетилиния;направете
ден=изхвърлен $ ред | разрез -° С 1-3
ако [ $ ден=='Слънце' ]
тогава
изхвърлен „Неделята е празникът“
иначе
изхвърлен $ ден
бъда
Свършен<$ име на файл

Стартирайте скрипта.

$коткаweekday.txt
$башcmdsub1.sh

Изход:

Използване на подмяна на команда в цикъл

Можете да съхранявате резултата от подмяна на команда във всяка променлива на цикъла, която е показана в следващия пример.

Пример#5:

Създайте файл с име cmdsub2.sh със следния код. Тук, ` ls -d * / `команда се използва за извличане на целия списък с директории от текущата директория. For цикълът се използва тук, за да прочете всяка директория от изхода и да я съхрани в променливата $ dirname който е отпечатан по -късно.

cmdsub2.sh

#!/bin/bash
за dirname в$(ls * /)
направете
изхвърлен '$ dirname'
Свършен

Стартирайте скрипта.

$башcmdsub2.sh

Изход:

Използване на вложени команди

Как можете да използвате множество команди с помощта на тръба (|) е показано в предишния пример. Но можете да използвате вложени команди при подмяна на команди, където изходът на първата команда зависи от изхода на втората команда и тя работи срещу командата pipe (|).

Синтаксис на вложена команда:

където=команда1 команда

Пример#6:

Две команди, ` изхвърлен `и` Кой `се използват в този пример като вложена команда. Тук, ` Кой команда ще се изпълни първо, като отпечата информацията на потребителя на текущо влезлия потребител. Изходът на ` Кой `командата ще се изпълни от` изхвърлен `команда и изходът на` изхвърлен `ще се съхранява в променливата $ var . Тук изходът на ` изхвърлен `командата зависи от изхода на` Кой `команда.

$където=изхвърленКой
$изхвърлен $ var

Изход:

Използване на командния път

Ако знаете пътя на командата, тогава можете да изпълните командата, като посочите пътя на командата, когато използвате подмяна на команда. Следващият пример показва използването на командния път.

Пример#7:

`whoami` командата показва потребителското име на влезлия в момента потребител. По подразбиране тази команда се съхранява в / usr/ съм/ папка. Изпълнете следния скрипт, за да изпълните ` whoami` команда, използваща path и store в променливата, $ продукция, и отпечатайте стойността на $ продукция .

$изход= $(/usr/съм/кой съм аз)
$изхвърлен $ продукция

Изход:

Използване на аргумент от командния ред

Можете да използвате аргумента на командния ред с командата като аргумент в подмяната на командата.

Пример#8:

Създайте bash файл с име cmdsub3.sh със следния скрипт. ` basename командата `се използва тук за извличане на името на файла от 2ndаргумент от командния ред и съхраняван в променливата, $ име на файл . Ние знаем 1улАргументът на командния ред е името на изпълняващия скрипт, обозначен с $ 0.

#!/bin/bash
име на файл=basename $ 1
изхвърлен „Името на файла е$ име на файл. '

Изпълнете скрипта със следната стойност на аргумента.

$башcmdsub3.sh Desktop/темп/hello.txt

Тук, основното име на пътя, Desktop/temp/hello.txt е „ hello.txt “. И така, стойността на $ име на файл ще бъде hello.txt .

Изход:

Заключение:

В този урок са показани различни употреби на замествания на команди. Ако трябва да работите с множество команди или зависими команди и да съхранявате резултата временно, за да изпълнявате по -късно други задачи, тогава можете да използвате тази функция в скрипта си, за да получите изхода.

Повече информация във видеото: