Урок за скриптове на Bash за начинаещи

Bash Scripting Tutorial



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

Съдържание:

  1. Коментари
  2. ехо команда
  3. Променливи
  4. Условно изявление
  5. Цикли
  6. Функции
  7. Извикване на програми в скрипт
  8. Създаване на менюта
  9. Обработка на командния ред
  10. Аритметика
  11. Манипулиране на низове
  12. Връщане на кодове за връщане от скрипт и улавяне в друг скрипт
  13. Четене и запис на файлове
  14. Тръби

Коментари

Добавянето на коментари с кода е съществена част от всеки език за програмиране. Коментарите не се анализират със скрипта по време на изпълнение. Читателят може да разбере правилно всеки код, ако кодът е добре коментиран. Можете да добавите коментар по много начини в bash скрипт. В тази част е показано как можете да добавяте едноредови и многоредови коментари в bash скрипт. Създайте bash файл със следния скрипт, за да знаете използването на bash коментар. Тук символът „#“ се използва за добавяне на коментар на един ред и единичен кавичка („) с„: “се използва за добавяне на коментари на няколко реда.







bash_comment.sh



#!/bin/bash
#Вземете число като вход
изхвърлен „Въведете номер“
Прочетида се
:'
Проверете дали входният номер е
по -малко от 10 или по -голямо от 10 или равно на 10
'

ако [[ $ a -лт 10 ]]
тогава
изхвърлен „Броят е по -малък от 10“
elif [[ $ a -gt 10 ]]
тогава
изхвърлен „Броят е по -голям от 10“
иначе
изхвърлен „Числото е равно на 10“
бъда

Изход:



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





$башbash_comment.sh

Тук скриптът се изпълнява три пъти с входна стойност 3, 10 и 90. Ще се появи следният изход.



Ако искате да научите повече за bash коментирането, можете да проверите този урок .

Отидете на върха

echo команда

Командата `echo` се използва в bash за отпечатване на изход в терминала. Различни опции могат да се използват с командата echo в bash за отпечатване на изхода по различни начини. Създайте bash файл със следния скрипт, за да знаете двете прости употреби на командата `echo`. Тук първата команда „echo“ ще отпечата прости текстови данни с нов ред, а втората команда echo ще отпечата прост текст без нов ред.

echo_test.sh

#!/bin/bash
#Отпечатайте първия текст
изхвърлен „Отпечатайте текст с нов ред“
#Отпечатайте втория текст
изхвърлен „Печат на текст без нов ред“

Изход:

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

$башecho_test.sh

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

Има много други приложения на командата `echo` в bash. Можете да проверите този урок, за да научите повече за командата `echo`.

Отидете на върха

Променливи

Декларацията на променлива е необходима част от всеки език за програмиране. Bash променливите могат да бъдат декларирани по различни начини. Когато стойност е зададена в променлива, тогава в началото на променливата не се използва символ. Символът „$“ се използва с името на променливата в момента на четене на стойността на променливата. Променливата може да се използва от терминала или може да се използва във всеки bash скрипт.

Следните команди ще декларират низова променлива с име mystr с определена стойност и следващо отпечатване на стойността на променливата в терминала.

$mystr=„Харесва ми bash програмиране“
$изхвърлен $ mystr

Изход:

Създайте bash файл със следния скрипт. Тук се декларират две променливи. Това са $ a и $ b . Ако входната стойност, която се съхранява в $ a е равно на $ b след това съобщението, Числата са равни ще бъдат отпечатани по друг начин Числата не са равни ще бъдат отпечатани.

var.sh

#!/bin/bash
изхвърлен „Въведете номер“
Прочетида се
б=100
ако [[ $ a -екв $ b ]]
тогава
изхвърлен „Числата са равни“
иначе
изхвърлен „Числата не са равни“
бъда

Изход:

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

$башvar.sh

Горната команда се изпълнява два пъти със стойност 56 и 100. Ще се появи следният изход.

Ако искате да знаете повече за bash променливите, можете да проверите този урок .

Отидете на върха

Условно изявление

Подобно на друг език за програмиране, можете да използвате условен израз в bash. ‘ Ако-тогава-иначе ' и ' случай 'Изявленията се използват главно за прилагане на инструкции за условия на всеки език за програмиране. Използването на условен израз чрез използване „Ако“ изявлението е показано в този раздел на този урок. Създайте bash файл със следния скрипт, където се използва условен израз. Тук две стойности ще бъдат взети от потребителя като вход и съхранени в променливите, $ код , и $ възраст . Изразът „ако“ се използва за проверка на стойността на $ възраст е по -голямо или равно на 18 и стойността на $ код е 1100 . Ако и двете условия са верни, съобщението, Имате право да гледате филма ще бъдат отпечатани по друг начин Нямате право да гледате филма ще бъдат отпечатани.

cond.sh

#!/bin/bash

изхвърлен 'Въведете кода си'
Прочетикод
изхвърлен „Въведете възрастта си“
Прочетивъзраст

ако [[ $ възраст -прости 18 && $ код -екв '1100' ]]
тогава
изхвърлен „Имате право да гледате филма“
иначе
изхвърлен „Нямате право да гледате филма“
бъда

Изход:

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

$башcond.sh

Следният изход ще се появи след приемане на различни входни стойности. 1100 се дава като код, а 5 се дава като възраст за първото изпълнение и ако условието връща false за тези стойности. 1100 се дава като код, а 45 се дава като възраст за второто изпълнение, което връща true за условие if.

Ако искате да научите повече за условния израз на bash, можете да проверите този урок.

Отидете на върха

Цикли

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

Използване на цикъл for

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

for.sh

#Прочетете име на делничен ден във всяка итерация на цикъла
заденвпонеделник вторник сряда четвъртък петък събота неделя
направете

#Проверете дали името на делничния ден е понеделник или четвъртък
ако [[ $ ден=='Понеделник' || $ ден==„Четвъртък“ ]]
тогава
изхвърлен „Срещата продължава$ денв 9:30 сутринта

#Проверете дали името на делничния ден е вторник или сряда или петък
elif [[ $ ден==„Вторник“ || $ ден==„Сряда“ || $ ден=='Петък' ]]
тогава
изхвърлен 'Обучение на$ денв 11:00 ч.
иначе

#Отпечатайте „Празник“ за други дни
изхвърлен '$ дене празник '
бъда
Свършен

Изход:

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

$башfor.sh

Следният изход ще се появи след стартиране на скрипта.

Ако искате да знаете повече за bash for loop, можете да проверите този урок.

Използване на цикъл while

Създайте bash файл със следния скрипт, където ` докато ` цикъл се използва за итерация. Този скрипт ще отпечата тези числа от 1 до 20, които са четни и делими на 5. Тук, $ брояч променливата се използва за контрол на итерацията на цикъла и стойността на тази променлива се увеличава с 1 във всяка итерация. Кога `ако` условие ще върне true, след което ще отпечата стойността на $ брояч .

#!/bin/bash

#Отпечатайте съобщението
изхвърлен 'Отпечатайте числата, които са четни и делими на 5'

#Инициализирайте брояча
брояч=1

#Итерация на цикъла, докато стойността $ counter е по -малка или равна на 20
докато [ $ брояч -на двайсет ]
направете

#Проверете $ брояча е делим на 2 и 5
ако [[ $ брояч%2-екв 0 && $ брояч%5-екв 0 ]]
тогава
#Отпечатайте $ counter без нов ред
изхвърлен '$ брояч'
бъда

#Увеличете $ counter с 1
((брояч ++))
Свършен
изхвърлен 'Свършен'

Изход:

$башwhile.sh

В рамките на 1-20 има само числа, които са четни и се делят на 5. След стартирането на скрипта ще се появи следният изход.

Ако искате да знаете повече използвани от bash ` докато` цикъл, след което можете да проверите този урок .

Използва се цикъл до

Създайте bash файл със следния скрипт, където ` до` цикъл се използва за итерация. Този скрипт ще отпечата всички нечетни числа от 0 до 20. $ n променливата се използва в този скрипт за повторение на цикъла.

до.ш

#!/bin/bash

#Инициализирайте променливата, n
н=двайсет

#Повторете цикъла, докато стойността на $ n е по -голяма от 0
до [ $ n -лт 0 ]
направете

#Проверете дали стойността на n е нечетна
ако [[ $ n%2-gt 0 ]]
тогава
изхвърлен $ n
бъда

#Увеличете стойността на n с 1
((н=$ n-1))
Свършен

Изход:

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

$башдо.ш

Скриптът ще отпечата всички четни числа от 20 до 1. След стартирането на скрипта ще се появи следният изход.

Отидете на върха

Функции

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

Създайте bash файл със следния скрипт, за да знаете как функциите могат да бъдат декларирани и извикани в bash script. В скрипта са декларирани три функции. Първата функция е декларирана за отпечатване на просто съобщение, Bash програмиране за начинаещи . Втората функция е декларирана за присвояване на стойност на низ в променлива, $ return_str което ще отпечата, Научете bash програмиране с LinuxHint след извикване на функцията. Третата функция е декларирана да чете стойност на аргумент като радиус на кръг, който ще бъде предоставен по време на извикването на функцията. Тук, местен се използва за четене на стойността на аргумента. Тази функция ще изчисли площта на окръжността въз основа на стойността на радиуса, като използва формулата, πr2 и отпечатайте изчислената стойност на площта.

func.sh

#!/bin/bash

#Обявете проста функция
функцияprint_message()
{
изхвърлен „Bash програмиране за начинаещи“
}

#Обявете функция за връщане на стойност на низ
функцияret_strdata()
{
#Инициализирайте променливата със стойност на низ
return_str='Научете bash програмиране с LinuxHint'
}

#Обявете функция за четене на стойността на аргумента
функцияизчисляване на площ()

#Прочетете предадената стойност на аргумента
местен радиус=$ 1
■ площ= $(изхвърлен $ радиус*$ радиус*3.14

#Извикайте функцията, за да отпечатате просто съобщение
print_message

#Извикайте функцията, която ще присвои стойност на низ в променлива
ret_strdata

#Отпечатайте стойността на променливата
изхвърлен $ return_str

#Прочетете стойността на радиуса
изхвърлен „Въведете стойността на радиуса“
Прочетиработа

#Извикайте функцията със стойност на радиуса
изчисляване на площ$ rad

Изход:

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

$башfunc.sh

Следният изход ще се появи след стартиране на скрипта. Първите два реда ще се отпечатат чрез извикване на функциите, print_message () и ret_strdata () . Последният ред ще се отпечата чрез извикване на функцията, изчисляване на площ () с взетата стойност на входящия радиус.

Ако искате да знаете за връщане на низ от функцията bash, можете този урок на.

Отидете на върха

Извикване на програми в скрипт

Можете да използвате много видове команди за извикване на други програми във всеки bash скрипт, като например източник, bash, eval, exec и т.н. Да предположим три bash файла, add.sh , извадете.sh, умножи.ш и деление.ш създаден за извършване на събиране, изваждане, умножение и деление. Тук, извадете.ш и дивизия.ш прочетете аргументите на командния ред. Сценарият на всички тези четири файла е даден по -долу.

add.sh

#!/bin/bash
да се=60
б=40
((резултат=$ a+$ b))
изхвърлен „Добавянето на$ a+$ b=$ резултат'

subract.sh

#!/bin/bash
да се=$ 1
б=$ 2
((резултат=$ a-$ b))
изхвърлен 'Изваждането на$ a-$ b=$ резултат'

умножи.ш

#!/bin/bash
((резултат=$ 1*$ 2))
изхвърлен „Умножението на $ 1 и $ 2 е$ резултат'

разделя.ш

#!/bin/bash
да се=$ 1
б=2
((резултат=$ a/$ b))
изхвърлен 'Разделянето на$ aот$ bе$ резултат'

Създайте bash файл с име, callpro.sh със следния скрипт за извикване на споменатите bash файлове с помощта на source, bash, eval и exec команди. Трябва да зададете разрешение за изпълнение на горните четири файла, преди да изпълните следния скрипт. Командата `source` се използва за извикване add.sh файл. Командата `bash` се използва за изпълнение на subtract.sh файл. Командата `eval` се използва за изпълнение на файл multiply.sh. Две входни стойности се изпращат като аргументи на командния ред за командата `eval`. Последната команда е команда exec, която работи само с абсолютен път. За целта пълното име на пътя на файла divide.sh е дадено в скрипта.

callpro.sh

#!/bin/bash
скрипт1='add.sh'
скрипт2='subtract.sh'
скрипт3='multiply.sh'
скрипт4='/home/fahmida/code/divide.sh'

източник '$ script1'

баш $ script2 петдесет двайсет

изхвърлен „Въведете стойността на a“
Прочетида се
изхвърлен 'Въведете стойността на b'
Прочетиб
eval баш $ script3 $ a $ b
exec $ script4 30

Изход:

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

$башcallpro.sh

Следният изход ще се появи след стартиране на скрипта.

Отидете на върха

Създаване на менюта

В bash има полезна команда за създаване на просто меню, което се нарича `изберете` команда. С помощта на тази команда могат да се създават различни видове менюта. Конкретен списък с данни се използва за създаване на меню чрез тази команда. Създайте bash файл със следния код, за да видите използването на `изберете` команда за създаване на меню. В този пример списъкът с пет елемента ще бъде отпечатан като меню и ще подкани потребителя да избере всеки език от списъка. Избраната стойност ще се съхранява в променливата, $ език който се отпечатва по -късно чрез свързване с друг низ. Скриптът непрекъснато ще иска избор на език, докато потребителят не натисне 6 да се прекрати от скрипта.

menu.sh

#!/bin/bash

#Отпечатайте съобщение за потребителя
изхвърлен „Изберете любимия си език“

# Определете списъка с елемент от менюто
изберетеезикв° С# Java PHP Python Bash Изход
направете
#Отпечатайте избраната стойност
ако [[ $ език==„Изход“ ]]
тогава
изход 0
иначе
изхвърлен „Избраният език е$ език'
бъда
Свършен

Изход:

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

$башmenu.sh

Според следния изход, потребителят е натиснал 3 за първи път, когато е отпечатал PHP и е натиснал 6 за втори път, който е завършил от скрипта.

Ако искате да научите повече за създаването на bash меню с `select`, можете да посетите този урок.

Отидете на върха

Обработка на командния ред

Понякога трябва да предоставим входни стойности при изпълнение на скрипта от командния ред. Тази задача може да бъде изпълнена по два начина в bash. Един начин е чрез използване на променливи на аргументи, а друг начин е чрез използване на функция getopts. Четенето на входни данни от командния ред от терминала с помощта на променливата аргумент е показано в този раздел.

Създайте bash файл със следния скрипт, за да видите използването на четене на стойността на аргумента от командния ред. Този скрипт ще прочете три аргумента от командния ред, които ще се съхраняват в променливите, $ operand1, $ operand2 и $ operator. За да изпълнят скрипта правилно, първата и третата стойност на аргумента трябва да са числото, а втората стойност на аргумента трябва да бъде някой от четирите аритметични оператора („+“, „-“, „/“, „x“). ако изявлението ще провери стойността на оператора $ и ще извърши операцията въз основа на оператора и ще отпечата стойността.

cl1.sh

#!/bin/bash

#Отпечатайте променливите на аргумента
изхвърлен „Стойностите на аргументите са: $ 1 $ 2 $ 3“

# Съхранявайте стойностите на аргументите
операнд1=$ 1
операнд2=$ 3
оператор=$ 2

#Проверете стойността на втория аргумент на командата, за да извършите аритметичната операция
ако [[ $ оператор=='+' ]]
тогава
((резултат=$ operand1+$ operand2))
elif [[ $ оператор=='-' ]]
тогава
((резултат=$ operand1-$ operand2))
elif [[ $ оператор=='х' ]]
тогава
((резултат=$ operand1*$ operand2))
elif [[ $ оператор=='/' ]]
тогава

((резултат=$ operand1/$ operand2))
бъда

# отпечатайте резултата
изхвърлен 'Резултатът е =$ резултат'

Изход:

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

$башcl1.sh

Скриптът се изпълнява четири пъти за четири типа аритметични оператори. Следният изход ще се появи за стойностите на аргументите, 6 + 3, 6 - 3, 6 x 3 и 6/3 .

Стойностите на аргументите могат да бъдат предадени с двойка име-стойност в bash. Създайте bash файл със следния скрипт, за да покажете как да четете стойностите на аргументите с името. Скриптът ще прочете две променливи на аргумента. Стойностите на аргументите с име се отпечатват в първия израз на скрипта. След това се използва цикъл for за итерация на масива, който съдържа стойности на аргумента на командния ред. Всеки елемент от масива е разделен на двойка ключ-стойност с помощта на командата `cut`. След това, оператор case се използва за отпечатване на конкретно съобщение въз основа на стойността на ключа.

cl2.sh

. #! /съм/баш

#Отпечатайте променливите на аргумента
изхвърлен „Стойностите на аргументите са: $ 1 $ 2“

#Прочетете всеки аргумент поотделно, като използвате цикъл for
заядосанв '[защитен имейл]'
направете

#Отделно име и стойност на аргумента
ключ= $(изхвърлен $ arg | разрез -f1 =)
стойност= $(изхвърлен $ arg | разрез -f2 =)

#Отпечатайте съобщение въз основа на името на аргумента
случай $ ключ в
име) изхвърлен „Име на ученик =$ стойност';;
маркирайте) изхвърлен 'Получена марка =$ стойност' ;;
*)
esac
Свършен

Изход:

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

$башcl2.shиме= Абир Хосейнмаркирайте=90

В горните команди са предоставени два аргумента от командния ред. Това са име = Абир Хосейн и знак = 90 . име и марки са разделени от скрипта и две стойности се отпечатват след форматиране на изхода.

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

Отидете на върха

Аритметика

Извършването на аритметична операция е често срещано изискване на всеки език за програмиране. Bash извършва аритметичната операция по различен начин от друг стандартен език за програмиране. Има няколко начина за извършване на аритметични операции в bash. Един от простите начини за извършване на аритметичната операция е показан в този раздел. Създайте bash файл със следния скрипт. В този скрипт са показани четири вида аритметични операции. Прости операции за сумиране и разделяне се показват чрез използване на двойни първи скоби в началото на скрипта. След това се показва операцията за предварително увеличаване. И накрая, начинът за използване на стенографски оператор е показан в последната част на скрипта.

arith.sh

#!/bin/bash
# Изчислете сумата
резултат= $((петдесет+25))
# Отпечатайте сумираната стойност
изхвърлен 'сума =$ резултат'

# Изчислете делението
резултат= $((петдесет/25))
# Отпечатайте стойността на разделението
изхвърлен 'разделяне =$ резултат'

# Задайте стойност на N
н=10
# Извършване на предварително увеличение
((--Н))
# Отпечатайте стойността на N
изхвърлен „Стойност след намаляване =$ N'

# Използване на стенографски оператор
((N +=10 ))
# Отпечатайте стойността на N
изхвърлен „Стойност след добавяне на 10 =$ N'

Изход:

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

$башarith.sh

Следният изход ще се появи след стартиране на скрипта.

Всички аритметични операции се извършват с помощта на двойни скоби в горния скрипт. Но можете да използвате „ позволявам “,„ expr ' и ' пр.н.е. ‘Команда за извършване на аритметичната операция в bash. Ако искате да знаете повече за тези команди за извършване на bash аритметични операции, можете да посетите този урок.

Отидете на върха

Манипулиране на низове

Много видове задачи могат да се изпълняват с низовите данни в bash. Някои са обединяване на низ, сравняване на низ, разделяне на низ, промяна на регистъра на низа и т.н. Няма вградени низови функции като други стандартни езици в bash за извършване на низовите операции. Някои често срещани манипулации на низ са обсъдени в този раздел на този урок.

Свързващ низ

Добавянето на два или повече низове заедно се нарича конкатенация на низ. Низът се свързва заедно в bash, като се поставя един след друг. Създайте bash файл със следния скрипт, за да покажете използването на конкатенация на низ. Две низови променливи се инициализират и се отпечатват след комбиниране на променливите. Тук съдържанието на $ string1 и $ string2 ще бъдат обединени и отпечатани.

concat.sh

#!/bin/bash

#Инициализирайте първата низова променлива
низ1='Харесвам '
#Инициализирайте втора низова променлива
низ2=„Bash програмиране“
#Печат след комбиниране на двата низа
изхвърлен '$ string1$ string2'

Изход:

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

$башconcat.sh

Следният изход ще се появи след стартиране на скрипта.

Можете да научите повече за конкатенацията на низове от този урок.

Отидете на върха

Сравняване на низ

Bash използва различни типове оператори за сравняване на низови данни. Създайте bash файл със следния скрипт, за да покажете как да сравнявате две низови данни. Стойността на низ се приема като вход в скрипта, който се сравнява с друг низ. Ако стойността съвпада, съобщение, Харесваш Python ще бъдат отпечатани по друг начин Харесваш PERL ще бъдат отпечатани.

сравни.sh

#!/bin/bash
изхвърленВъведете произволна стойност на низ
Прочетитекст

#Проверете дали входните данни са еквивалентни на Python
ако [ $ текст=='Python' ];тогава
изхвърлен „Харесваш Python.“
иначе
изхвърлен „Харесваш PERL“
бъда

Изход:

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

$башсравни.sh

Следният изход ще се появи след стартиране на скрипта, където входната стойност е „PERL“.

Можете да научите повече за сравнението на низове от този урок .

Разделяне на низ

Bash няма вградена функция за разделяне за разделяне на низови данни. Низовите данни могат да бъдат разделени по множество начини в bash въз основа на различни типове разделители. Създайте bash файл със следния скрипт, за да покажете как низовите данни могат да бъдат разделени на bash. Като вход се приема стойност на низ. Този скрипт ще раздели стойността на $ текст въз основа на пространството. Тук, IFS променливата се използва за задаване на разделителя. `прочетете` командата се използва тук за разделяне на текстовата стойност и съхраняване на стойностите в масив. за цикъл се използва за повторение на масива и отпечатване на стойността на всеки елемент.

split.sh

#!/bin/bash
#Въведете стойност на низ
изхвърленВъведете стойност на низ
Прочетитекст
# Задайте разделителя
IFS=''
#Разделете стойността на $ text в масив въз основа на разделител на пространството
Прочети -да сеобр<<< '$ текст'
# Отпечатайте всяка стойност на масива
застойноств '$ {arr [@]}';
направете
printf '$ стойностн'
Свършен

Изход:

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

$башsplit.sh

Следният изход ще се появи след въвеждане, Научете програмиране на Bash . Тази входна стойност е текст от три думи. И така, низът е разделен на три части.

Можете да научите повече за сравнението на низове от този урок .

Промяна на случая на низ

Повечето от скриптовите езици имат вградени функции за промяна на регистъра на низовите данни. Но случаят с низовите данни може да бъде променен в bash с помощта `tr` команда или чрез използване ':горен' и ':нисък' ключови думи. Създайте bash файл със следния скрипт, за да знаете начините за промяна на регистъра в bash. Тук данните от първия низ се преобразуват в главни букви чрез ‘^^’ символ и вторият низ се преобразува в малки с помощта на `tr` команда. `tr` командата ще търси всички главни букви в низа и ще преобразува знаците в малки.

case.sh

#!/bin/bash

#Инициализирайте данните от първия низ
текст1='[защитен имейл]'

#Отпечатайте стойността на $ text1, като преобразувате всички знаци в главни букви
изхвърлен $ {имейл ^^}

#Инициализирайте данните от втория низ
текст2= „Основи на програмирането на Bash“

#Отпечатайте стойността на $ text2, като преобразувате всички главни букви в малки
изхвърлен $ текст2 | NS [:горен:] [:нисък:]

Изход:

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

$башcase.sh

Следният изход ще се появи след стартиране на скрипта.

Можете да научите повече за сравнението на низове от този урок .

Отидете на върха

Четене на низови данни през цикъла

Низовите данни работят като символен масив за всеки език за програмиране. Как ' за 'Цикъл може да се използва за четене на низови данни в bash е показан в този раздел. Създайте основен файл със следния скрипт, за да прочетете всяка част от стойността на низ, като използвате цикъл for.

readstr.sh

#!/bin/bas
# Прочетете всяка дума от текст, като използвате цикъл for
застойноствBash програмиранезаначинаещите
направете
изхвърлен $ стойност
Свършен

Изход:

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

$башreadstr.sh

Следният изход ще се появи след стартиране на скрипта.

Можете да научите повече за итерационните низови данни, като използвате цикъла от този урок .

Отидете на върха

Връщане на кодове за връщане от скрипт и улавяне в друг скрипт

Един bash скрипт може да улови кодове за връщане от друг скрипт, като извика скрипта и използва „$?“ за да прочетете връщаната стойност. Да предположим, bash файл с име първо.sh връща код след изпълнение. Създайте друг bash файл с име второ.sh и добавете следния скрипт, за да хванете връщаната стойност и да извършите някои други задачи. Кодът на двата файла е даден по -долу. първо.sh файлът ще бъде извикан от второ.sh файл в началото на скрипта. първо.sh ще върне изходен код въз основа на входната стойност. second.sh ще хване кода от „$?“ и сравнете с 1. Ако и двете стойности са равни, тя ще отпечата, Входният номер е по -голям от 100 , в противен случай ще се отпечата, Входното число е по -малко или равно на 100 .

първо.sh

#!/bin/bash

изхвърлен „Въведете числова стойност“
Прочетин

# Проверете дали входната стойност е по -малка или равна на 100 или не
ако [[ $ n -на 100 ]]
тогава
изход 0
иначе
изход 1
бъда

второ.sh

#! /bin/bash

#Изпълнете файла, first.sh
баш 'first.sh'

#Проверете кода за връщане е равен на 1 или не
ако [ $? -екв 1 ]
тогава
изхвърлен „Входният номер е по -голям от 100“
иначе
изхвърлен „Входният номер е по -малък или равен на 100“
бъда

Изход:

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

$башвторо.sh

Следният изход ще се появи, когато скриптът се изпълнява от 55 и 110 за два пъти.

Отидете на върха

Четене и запис на файлове

Четенето и записването на файлове са общи изисквания за програмиране на bash. Bash няма вградена функция като друг език за четене или запис на файла. Има няколко начина за четене на файла в bash. Най -често срещаният начин за четене или запис на файл в bash е използването `котка` команда. Но тази команда се използва за четене на цялото съдържание на файла наведнъж. Можете също така да четете всеки файл ред по ред, като използвате всеки цикъл и `прочетете` команда. Използвайки оператор за пренасочване, ‘>’ , можете да записвате данни във всеки файл в bash. Ако искате да добавите данни във всеки файл, тогава трябва да използвате '>>' оператор. Операциите за четене и писане на файлове са показани в следващата част на този раздел.

Четене на файл в bash

Създайте bash файл със следния скрипт, за да прочетете съществуващ файл с име ‘ hardware.txt “. Съдържанието на този файл е дадено по -долу. В скрипта цялото съдържание на файла се чете от `котка` команда първа и следваща, докато цикълът се използва за четене на файла ред по ред.

hardware.txt

Монитор
Клавиатура
Мишка
Скенер
Принтер

readfile.sh

#!/bin/bash

изхвърлен 'Четене на файл с помощта на команда cat'

# Прочетете съдържанието на файла, като използвате командата `cat`
съдържание=коткаhardware.txt
изхвърлен $ съдържание

изхвърлен 'Четене на файл ред по ред с помощта на цикъл'

# Задайте името на файла
име на файл='hardware.txt'

# Всеки ред от файла ще се чете от всяка итерация на цикъла
докато Прочетилиния;
направете
# отпечатайте реда
изхвърлен $ ред
Свършен<$ име на файл

Изход:

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

$коткаhardware.txt
$башreadfile.sh

Тук първата команда ще отпечата съдържанието на файла, hardware.txt без стартиране на скрипт bash и втората команда ще изпълни скрипта на readfile.sh и отпечатайте съдържанието на файла два пъти, като използвате `котка` команда и `прочетете` команда с цикъл while. Можете да посетите това урок за да научите повече за четенето на файл ред по ред.

Писане на файл в bash

Създайте bash файл със следния скрипт, за да напишете ново съдържание в нов файл и да добавите данни към този файл.

writefile.sh

#!/bin/bash

изхвърлен „Въведете текст“
#Прочетете низови данни
Прочетиstr1
#Добавете входни данни във файла за първи път
изхвърлен $ str1 >test.txt

изхвърлен „Въведете друг текст“
#Прочетете други низови данни
Прочетиstr2
#Добавете входни данни в края на файла
изхвърлен $ str2 >>test.txt

#Покажете пълното съдържание на файла
изхвърлен коткаtest.txt

Изход:

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

$башwritefile.sh

Следният изход ще се появи след стартиране на скрипта.

Отидете на върха

Тръби

Pipe се използва за пренасочване на всеки команден изход към друг команден вход. Може да се използва сред различни типове команди bash за генериране на специфичен изход. Стандартният вход е свързан със стандартен изход в Linux по тръба. Трябва да зададете последователно командата със символ (|), за да получите желания изход. Две или повече команди могат да бъдат изпълнени заедно в една команда с помощта на тръба. Трябва да изпълните няколко команди в няколко реда без тръба, за да извършите една и съща задача. Така че използването на тръба е много полезно за извършване на много видове задачи в кратка форма.

синтаксис:

команда1|команда2|...

Тук изходът на команда1 ще бъде предаден като вход на команда2.

Същият тип задача се извършва с тръба и без тръба в следващата част на този раздел. Да предположим текстов файл с име marks.txt е дадена със следните данни.

marks.txt

Asraf CSE-409 79

Kabir CSE-304 95

Keya CSE-101 67

Asraf CSE-304 88

Keya CSE-409 90

Asraf CSE-101 92

Трябва да сортирате данните от файла и да разберете и отпечатате всички записи на името на ученика „K да . Можете да изпълните тази задача, като изпълните няколко команди, без да използвате тръба, която е показана в следващия раздел. Следните команди ще трябва да бъдат изпълнени, за да получите желания изход. Първата команда ще сортира файла. Втората команда ще търси записа „K да използвайки ` захващане `команда и съхранява изхода в a temp.txt файл. Третата команда ще преброи общите редове на a temp.txt файл, като използвате `wc` команда.

$видmarks.txt
$захващане 'Кея'marks.txt>temp.txt
$тоалетна -наtemp.txt

Изход:

Във файла има два записа на ученика „Keya“. Така че след изпълнението на горните команди ще се появи следният изход.

Можете лесно да обедините горните три команди и да получите същия изход, като изпълните една команда с тръба, която е показана в следната команда. Тук не се изисква временен файл, за да получите изхода. Тук изходът на ` вид `командата ще бъде предадена като вход на` захващане `команда и изходът на` захващане `командата ще бъде предадена като вход за `wc` команда.

$видmarks.txt| захващане 'Кея' | тоалетна -на

Изход:

След като изпълните горната команда, ще получите следния изход като изхода на предишната команда. Изходът на командата ще бъде 2.

Отидете на върха

Заключение:

Най -полезните и необходими теми за bash скриптовия език се опитват да бъдат разгледани в този урок. Надявам се, че читателят ще се възползва след като прочете този урок и ще може да напише bash скрипт по -ефективно.