Bash սցենարներ. սկսել

Bash սցենարներ. սկսել
Bash սկրիպտավորում Մաս 2. Լուփեր
Bash սկրիպտավորում Մաս 3. Հրամանի տողի ընտրանքներ և անջատիչներ
Bash սկրիպտավորում Մաս 4. Մուտքագրում և ելքագրում
Bash սկրիպտավորում Մաս 5. Սիգնալներ, ֆոնային առաջադրանքներ, սկրիպտների կառավարում
Bash սկրիպտավորում Մաս 6. Ֆունկցիաներ և գրադարանի մշակում
Bash սկրիպտավորում Մաս 7. sed և տեքստի մշակում
Bash սկրիպտավորում Մաս 8. awk տվյալների մշակման լեզու
Bash սկրիպտավորում Մաս 9. Կանոնավոր արտահայտություններ
Bash սկրիպտավորում Մաս 10. Գործնական օրինակներ
Bash սկրիպտավորում Մաս 11. Ինտերակտիվ կոմունալ ծառայությունների ակնկալիք և ավտոմատացում

Այսօր մենք կխոսենք bash սկրիպտների մասին։ Սրանք են՝ հրամանի տողի սկրիպտներ, գրված bash shell-ի համար։ Կան այլ shell-եր, ինչպիսիք են zsh-ը, tcsh-ը, ksh-ը, բայց մենք կկենտրոնանանք bash-ի վրա։ Այս նյութը նախատեսված է բոլորի համար, միակ պահանջը աշխատելու ունակությունն է։ հրամանի տող Linux- ը:

Bash սցենարներ. սկսել

Հրամանի տողի սկրիպտները նույն հրամանների հավաքածուներ են, որոնք կարող եք մուտքագրել ստեղնաշարից, հավաքված ֆայլերում և միավորված որոշակի ընդհանուր նպատակով: Հրամանների արդյունքը կարող է արժեքավոր լինել ինքնուրույն կամ ծառայել որպես մուտքային տվյալներ այլ հրամանների համար: Սկրիպտները հզոր միջոց են հաճախակի կատարվող գործողությունները ավտոմատացնելու համար:

Bash սցենարներ. սկսել

Այսպիսով, եթե խոսենք հրամանի տողի մասին, այն թույլ է տալիս միաժամանակ կատարել մի քանի հրամաններ՝ մուտքագրելով դրանք կետ-ստորակետերով բաժանված։

pwd ; whoami

Իրականում, եթե դուք սա փորձել եք ձեր տերմինալում, ապա արդեն գրել եք ձեր առաջին bash սկրիպտը, որն օգտագործում է երկու հրաման։ Այն աշխատում է այսպես։ Նախ, հրամանը pwd ցուցադրում է տեղեկատվություն ընթացիկ աշխատանքային գրացուցակի մասին, ապա հրամանը whoamiՑուցադրում է տեղեկություններ այն օգտատիրոջ մասին, որով դուք մուտք եք գործել։

Այս մոտեցումն օգտագործելով՝ դուք կարող եք մեկ տողում համատեղել այնքան հրամաններ, որքան ցանկանում եք, միակ սահմանափակումը ծրագրին փոխանցվող արգումենտների առավելագույն քանակն է։ Դուք կարող եք սահմանել այս սահմանափակումը՝ օգտագործելով հետևյալ հրամանը.

getconf ARG_MAX

Հրամանի տողը հիանալի գործիք է, բայց դուք պետք է հրամաններ մուտքագրեք դրա մեջ ամեն անգամ, երբ դրանք ձեզ անհրաժեշտ լինեն: Ի՞նչ կլիներ, եթե դուք կարողանայիք հրամանների հավաքածու գրել ֆայլի մեջ և պարզապես կանչել այդ ֆայլը՝ դրանք կատարելու համար: Իրականում, այն ֆայլը, որի մասին մենք խոսում ենք, կոչվում է հրամանի տողի սկրիպտ:

Ինչպես են աշխատում bash սկրիպտները

Ստեղծեք դատարկ ֆայլ՝ օգտագործելով հրամանը touchԱռաջին տողում դուք պետք է նշեք, թե որ shell-ն ենք օգտագործելու։ Մեզ հետաքրքրում է bash, ուստի ֆայլի առաջին տողը կլինի հետևյալը՝

#!/bin/bash

Այս ֆայլի մյուս տողերում հեշ նիշը օգտագործվում է այն մեկնաբանությունները նշելու համար, որոնք shell-ը չի մշակում: Այնուամենայնիվ, առաջին տողը հատուկ դեպք է, որտեղ հեշը հաջորդում է բացականչական նշան (այս հաջորդականությունը կոչվում է շեբանգ) և ճանապարհը դեպի bash, համակարգին ցույց տվեք, որ սկրիպտը ստեղծվել է հատուկ դրա համար bash.

Shell հրամանները բաժանված են նոր տողով, մեկնաբանությունները՝ հեշ նշանով։ Ահա թե ինչ տեսք ունի այն՝

#!/bin/bash
# This is a comment
pwd
whoami

Այստեղ, ինչպես հրամանի տողում, կարող եք հրամաններ գրել մեկ տողի վրա՝ բաժանված կետ-ստորակետերով։ Սակայն, եթե հրամաններ գրեք տարբեր տողերի վրա, ֆայլն ավելի հեշտ կլինի կարդալ։ Ամեն դեպքում, shell-ը կմշակի դրանք։

Սկրիպտի ֆայլի համար թույլտվությունների սահմանում

Պահպանեք ֆայլը՝ այն անուն տալով myscript, և bash սկրիպտ ստեղծելու աշխատանքը գրեթե ավարտված է։ Այժմ մնում է միայն այս ֆայլը դարձնել կատարվող, հակառակ դեպքում, երբ փորձեք այն գործարկել, կհանդիպեք սխալի։ Permission denied.

Bash սցենարներ. սկսել
Սխալ կարգավորված թույլտվություններով սկրիպտի ֆայլ գործարկելու փորձ

Եկեք ֆայլը դարձնենք կատարվող՝

chmod +x ./myscript

Հիմա փորձենք այն իրականացնել.

./myscript

Թույլտվությունները սահմանելուց հետո ամեն ինչ կաշխատի այնպես, ինչպես պետք է։

Bash սցենարներ. սկսել
Bash սկրիպտի հաջող մեկնարկ

Հաղորդագրությունների արտածում

Linux կոնսոլում տեքստ արտածելու համար օգտագործեք հրամանը echoԵկեք օգտագործենք այս գիտելիքները և խմբագրենք մեր սկրիպտը՝ ավելացնելով բացատրություններ այն տվյալներին, որոնք արդեն իսկ արտածում են դրանում առկա հրամանները։

#!/bin/bash
# our comment is here
echo "The current directory is:"
pwd
echo "The user logged in is:"
whoami

Սա է այն, ինչ դուք կստանաք թարմացված սկրիպտը գործարկելուց հետո։

Bash սցենարներ. սկսել
Հաղորդագրությունների արտածում սկրիպտից

Այժմ մենք կարող ենք արտածել բացատրական տեքստ՝ օգտագործելով հրամանը echoԵթե ​​չգիտեք, թե ինչպես խմբագրել ֆայլը Linux գործիքների միջոցով, կամ նախկինում չեք հանդիպել այս հրամանին echo, նայեք այս նյութը:

Փոփոխականների օգտագործումը

Փոփոխականները թույլ են տալիս պահպանել տեղեկատվություն սկրիպտի ֆայլում, ինչպիսիք են հրամանների արդյունքները, այլ հրամանների կողմից օգտագործելու համար։

Առանձին հրամաններ կատարելու մեջ ոչ մի վատ բան չկա՝ առանց դրանց աշխատանքի արդյունքները պահպանելու, սակայն այս մոտեցման հնարավորությունները շատ սահմանափակ են։

Bash սկրիպտներում կարող են օգտագործվել երկու տեսակի փոփոխականներ՝

  • Շրջակա միջավայրի փոփոխականներ
  • Օգտատիրոջ փոփոխականներ

Շրջակա միջավայրի փոփոխականներ

Երբեմն անհրաժեշտ է աշխատել որոշ համակարգային տվյալների հետ shell հրամաններում: Օրինակ, ահա թե ինչպես կարելի է ցուցադրել ընթացիկ օգտատիրոջ տնային գրացուցակը.

#!/bin/bash
# display user home
echo "Home for the current user is: $HOME"

Նշենք, որ մենք կարող ենք օգտագործել համակարգի փոփոխականը $HOME կրկնակի չակերտների մեջ դա չի խանգարի համակարգին ճանաչել այն։ Ահա թե ինչ կպատահի, եթե կատարեք վերը նշված սկրիպտը։

Bash սցենարներ. սկսել
Սկրիպտում միջավայրի փոփոխականի օգտագործումը

Ի՞նչ անել, եթե ուզում եք էկրանին ցուցադրել դոլարի նշանը։ Եկեք փորձենք սա՝

echo "I have $1 in my pocket"

Համակարգը կհայտնաբերի դոլարի նշանը չակերտներով բաժանված տողում և կորոշի, որ մենք հղում ենք կատարել փոփոխականի։ Սկրիպտը կփորձի ցուցադրել չսահմանված փոփոխականի արժեքը։ $1Սա այն չէ, ինչ մեզ պետք է։ Ի՞նչ անել։

Այս իրավիճակում դոլարի նշանից առաջ հակառակ թեք գիծը՝ escape նիշը, օգտագործելը կօգնի.

echo "I have $1 in my pocket"

Հիմա սկրիպտը կարտադրի ճիշտ այն, ինչ սպասվում է։

Bash սցենարներ. սկսել
Դոլարի նշանը տպելու համար փախուստի հաջորդականության օգտագործումը

Օգտատիրոջ փոփոխականներ

Բացի միջավայրի փոփոխականներից, bash սկրիպտները թույլ են տալիս սահմանել և օգտագործել ձեր սեփական փոփոխականները սկրիպտում: Նման փոփոխականները պահպանում են իրենց արժեքը մինչև սկրիպտի կատարման ավարտը:

Ինչպես համակարգի փոփոխականների դեպքում, օգտատիրոջ փոփոխականներին կարելի է մուտք գործել դոլարի նշանի միջոցով՝
TNW-CUS-FMP — մեր ծառայությունների 10% զեղչի գովազդային կոդ, որը կարելի է ակտիվացնել 7 օրվա ընթացքում

#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"

Ահա թե ինչ է պատահում նման սցենարի իրականացումից հետո։

Bash սցենարներ. սկսել
Սկրիպտում օգտագործողի փոփոխականներ

Հրամանի փոխարինում

Bash սկրիպտների ամենաօգտակար առանձնահատկություններից մեկը հրամանների արդյունքից տեղեկատվություն հանելու և այն փոփոխականներին վերագրելու հնարավորությունն է, որը թույլ է տալիս օգտագործել այդ տեղեկատվությունն սկրիպտի ֆայլի ցանկացած վայրում։

Դա կարելի է անել երկու եղանակով.

  • Հետադարձ նշանի օգտագործումը "`"
  • Դիզայնի օգնությամբ՝ $()

Առաջին մոտեցումն օգտագործելիս զգույշ եղեք հետադարձ նշանի փոխարեն չօգտագործել մեկ չակերտ։ Հրամանը պետք է ներառված լինի հետևյալ երկուսի մեջ՝

mydir=`pwd`

Երկրորդ մոտեցմամբ նույն բանը գրվում է այսպես.

mydir=$(pwd)

Եվ վերջում սցենարը կարող է այսպիսի տեսք ունենալ.

#!/bin/bash
mydir=$(pwd)
echo $mydir

Գործողության ընթացքում հրամանի արտածումը pwdկպահպանվի փոփոխականում mydir, որի պարունակությունը, օգտագործելով հրամանը echo, կգնա կոնսոլ։

Bash սցենարներ. սկսել
Սկրիպտ, որը պահպանում է հրամանի արդյունքները փոփոխականում

Մաթեմատիկական գործողություններ

Սկրիպտ ֆայլում մաթեմատիկական գործողություններ կատարելու համար կարող եք օգտագործել ձևի կառուցումը $((a+b)):

#!/bin/bash
var1=$(( 5 + 5 ))
echo $var1
var2=$(( $var1 * 2 ))
echo $var2

Bash սցենարներ. սկսել
Մաթեմատիկական գործողություններ սցենարի մեջ

եթե-ապա կառավարման կառուցվածք

Որոշ սցենարներում անհրաժեշտ է վերահսկել հրամանների կատարման հոսքը: Օրինակ, եթե որոշակի արժեքը մեծ է հինգից, անհրաժեշտ է կատարել մեկ գործողություն, հակառակ դեպքում՝ մեկ այլ: Սա կիրառելի է բազմաթիվ իրավիճակներում, և այստեղ մենք կօգտագործենք կառավարման կառուցվածքը: if-thenԻր ամենապարզ ձևով այն այսպիսի տեսք ունի.

if команда
then
команды
fi

Ահա աշխատանքային օրինակ.

#!/bin/bash
if pwd
then
echo "It works"
fi

Այս դեպքում, եթե հրամանը կատարվում է pwdհաջողությամբ ավարտվելու դեպքում կոնսոլում կցուցադրվի «it works» տեքստը։

Եկեք օգտագործենք մեր ունեցած գիտելիքները և գրենք ավելի բարդ սցենար։ Ենթադրենք, որ մեզ անհրաժեշտ է գտնել որոշակի օգտատիրոջ /etc/passwd, և եթե այն գտնվել է, հաղորդեք, որ այն գոյություն ունի։

#!/bin/bash
user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fi

Սա այն է, ինչ դուք կստանաք այս սկրիպտը գործարկելուց հետո։

Bash սցենարներ. սկսել
Որոնել օգտատիրոջը

Այստեղ մենք օգտագործեցինք հրամանը grepֆայլում օգտատիրոջ որոնելու համար /etc/passwdԵթե ​​թիմը grepդուք ծանոթ չեք դրան, դրա նկարագրությունը կարող եք գտնել այստեղ.

Այս օրինակում, եթե օգտատերը գտնվի, սկրիպտը կարտադրի համապատասխան հաղորդագրություն: Բայց ի՞նչ անել, եթե օգտատերը չգտնվի: Այս դեպքում սկրիպտը պարզապես կդադարի աշխատել՝ առանց մեզ ոչինչ տեղեկացնելու: Մենք կցանկանայինք, որ այն մեզ նաև այս մասին տեղեկացնի, ուստի եկեք բարելավենք կոդը:

եթե-ապա-այլ կառավարման կառուցվածք

Որպեսզի ծրագիրը կարողանա հաղորդել ինչպես հաջողված, այնպես էլ ձախողված որոնման արդյունքները, մենք կօգտագործենք կառուցվածքը if-then-elseԱհա թե ինչպես է այն աշխատում.

if команда
then
команды
else
команды
fi

Եթե ​​առաջին հրամանը վերադարձնում է զրո, ինչը նշանակում է, որ այն հաջողությամբ կատարվել է, պայմանը կլինի ճիշտ, և կատարումը չի կատարվի ճյուղով մեկ։ elseՀակառակ դեպքում, եթե վերադարձվի զրոյից տարբերվող արժեք, որը կնշանակի ձախողում կամ կեղծ արդյունք, դրանից հետո հրամանները կկատարվեն։ else.

Եկեք գրենք այսպիսի սկրիպտ՝

#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
else
echo "The user $user doesn’t exist"
fi

Նրա ելույթը ձախողվեց else.

Bash սցենարներ. սկսել
Սկրիպտի գործարկում if-then-else կոնստրուկտով

Լավ, անցնենք առաջ և ինքներս մեզ հարցնենք ավելի բարդ պայմանների մասին: Ի՞նչ անել, եթե մեզ անհրաժեշտ լինի ստուգել ոչ թե մեկ, այլ մի քանի պայման: Օրինակ, եթե գտնվի անհրաժեշտ օգտատերը, մեզ անհրաժեշտ կլինի ցուցադրել մեկ հաղորդագրություն, եթե որևէ այլ պայման բավարարվի՝ մեկ այլ հաղորդագրություն և այլն: Նման իրավիճակում մեզ կօգնեն ներդրված պայմանները: Այն այսպիսի տեսք ունի.

if команда1
then
команды
elif команда2
then
команды
fi

Եթե ​​առաջին հրամանը վերադարձնում է զրո, ինչը նշանակում է, որ այն հաջողությամբ կատարվել է, ապա առաջին բլոկի հրամանները կկատարվեն։ then, հակառակ դեպքում, եթե առաջին պայմանը կեղծ է, և եթե երկրորդ հրամանը վերադարձնում է զրո, կոդի երկրորդ բլոկը կկատարվի։

#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
elif ls /home
then
echo "The user doesn’t exist but anyway there is a directory under /home"
fi

Նման սկրիպտում, օրինակ, կարող եք ստեղծել նոր օգտատեր՝ օգտագործելով հրամանը useradd, եթե որոնումը որևէ արդյունք չի տվել, կամ անել որևէ այլ օգտակար բան։

Թվերի համեմատություն

Դուք կարող եք համեմատել թվային արժեքները սկրիպտներում: Ստորև բերված է համապատասխան հրամանների ցանկը:

n1 -eq n2Վերադարձնում է true, եթե n1 հավասար է n2.
n1 -ge n2 Վերադարձնում է true, եթե n1ավելի կամ հավասար n2.
n1 -gt n2Վերադարձնում է true, եթե n1 ավելին, քան n2.
n1 -le n2Վերադարձնում է true, եթե n1պակաս կամ հավասար n2.
n1 -lt n2Վերադարձնում է true, եթե n1-ը փոքր է, քան n2.
n1 -ne n2Վերադարձնում է true, եթե n1հավասար չէ n2.

Որպես օրինակ, փորձենք համեմատության օպերատորներից մեկը։ Նկատի ունեցեք, որ արտահայտությունը փակագծերի մեջ է։

#!/bin/bash
val1=6
if [ $val1 -gt 5 ]
then
echo "The test value $val1 is greater than 5"
else
echo "The test value $val1 is not greater than 5"
fi

Սա է այն, ինչ այս հրամանը կարտացոլի։

Bash սցենարներ. սկսել
Թվերի համեմատումը սցենարներում

Փոփոխական արժեք val1ավելի քան 5, ճյուղը վերջապես կատարվում է thenհամեմատության օպերատորը, և համապատասխան հաղորդագրություն է ցուցադրվում կոնսոլում։

Տողերի համեմատություն

Դուք կարող եք համեմատել տողերի արժեքները նաև սկրիպտներում: Համեմատության օպերատորները բավականին պարզ են թվում, բայց տողերի համեմատության որոշ հատուկ առանձնահատկություններ կան, որոնք մենք կքննարկենք ստորև: Ահա օպերատորների ցանկը:

str1 = str2 Ստուգում է տողերի հավասարությունը, վերադարձնելով true, եթե տողերը նույնական են։
str1 != str2Վերադարձնում է true, եթե տողերը նույնական չեն։
str1 < str2Վերադարձնում է true, եթե str1ավելի քիչ քան str2.
str1 > str2 Վերադարձնում է true, եթե str1ավելին քան str2.
-n str1 Վերադարձնում է true, եթե երկարությունը str1մեծ է զրոյից։
-z str1Վերադարձնում է true, եթե երկարությունը str1հավասար է զրոյի։

Ահա սկրիպտում տողերի համեմատման օրինակ՝

#!/bin/bash
user ="likegeeks"
if [$user = $USER]
then
echo "The user $user  is the current logged in user"
fi

Սկրիպտի կատարման արդյունքում մենք կստանանք հետևյալը։

Bash սցենարներ. սկսել
Սկրիպտներում տողերի համեմատում

Տողերի համեմատության մեջ կա մեկ առանձնահատկություն, որը հարկ է նշել։ Մասնավորապես, ">" և "<" օպերատորները պետք է բացվեն հակառակ թեք նշանով, հակառակ դեպքում սկրիպտը ճիշտ չի աշխատի, չնայած սխալի հաղորդագրություններ չեն հայտնվի։ Սկրիպտը ">" նշանը մեկնաբանում է որպես ելքային վերահասցեավորման հրաման։

Ահա, թե ինչպես է այս օպերատորների հետ աշխատանքը կոդում երևում.

#!/bin/bash
val1=text
val2="another text"
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Ահա սցենարի արդյունքները։

Bash սցենարներ. սկսել
Տողերի համեմատություն, ցուցադրված նախազգուշացում

Խնդրում ենք նկատի ունենալ, որ սկրիպտը, չնայած կատարված է, առաջացնում է նախազգուշացում.

./myscript: line 5: [: too many arguments

Այս նախազգուշացումից ազատվելու համար եկեք եզրակացնենք $val2 կրկնակի չակերտների մեջ՝

#!/bin/bash
val1=text
val2="another text"
if [ $val1 > "$val2" ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Հիմա ամեն ինչ աշխատում է այնպես, ինչպես պետք է։

Bash սցենարներ. սկսել
Տողերի համեմատություն

">" և "<" օպերատորների մեկ այլ առանձնահատկությունն այն է, թե ինչպես են նրանք աշխատում մեծատառերի և փոքրատառերի հետ։ Այս առանձնահատկությունը հասկանալու համար պատրաստենք հետևյալ բովանդակությամբ տեքստային ֆայլ՝

Likegeeks
likegeeks

Եկեք պահպանենք այն՝ անուն տալով myfile, որից հետո տերմինալում կատարում ենք հետևյալ հրամանը՝

sort myfile

Այն ֆայլից տողերը կդասավորի հետևյալ կերպ՝

likegeeks
Likegeeks

Թիմ sort, ըստ լռելյայնի, տողերը տեսակավորում է աճման կարգով, այսինքն՝ մեր օրինակում փոքրատառը փոքր է մեծատառից։ Հիմա եկեք պատրաստենք սկրիպտ, որը կհամեմատի նույն տողերը։

#!/bin/bash
val1=Likegeeks
val2=likegeeks
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Եթե ​​այն գործարկեք, կտեսնեք, որ ամեն ինչ հակառակն է. փոքրատառը հիմա մեծ է մեծատառից։

Bash սցենարներ. սկսել
Սորտավորման հրամանի և տողի համեմատությունը սկրիպտի ֆայլում

Համեմատության հրամաններում մեծատառերը փոքր են, քան փոքրատառերը։ Տողերի համեմատությունները կատարվում են այստեղ՝ համեմատելով նիշերի ASCII կոդերը, և, հետևաբար, տեսակավորման կարգը կախված է նիշերի կոդերից։

Թիմ sort, իր հերթին, օգտագործում է համակարգի լեզվի կարգավորումներում նշված տեսակավորման կարգը։

Ֆայլերի ստուգումներ

Հետևյալ հրամանները, հավանաբար, ամենատարածվածն են bash սկրիպտներում։ Դրանք թույլ են տալիս ստուգել ֆայլերի հետ կապված տարբեր պայմաններ։ Ահա այդ հրամանների ցանկը։

-d fileՍտուգում է, թե արդյոք ֆայլը գոյություն ունի և այն գրացուցակ է։
-e fileՍտուգում է, թե արդյոք ֆայլը գոյություն ունի։
-f file Ստուգում է, թե արդյոք ֆայլը գոյություն ունի և ֆայլ է։
-r fileՍտուգում է, թե արդյոք ֆայլը գոյություն ունի և ընթեռնելի է։
-s file ПՍտուգում է, թե արդյոք ֆայլը գոյություն ունի և դատարկ չէ։
-w fileՍտուգում է, թե արդյոք ֆայլը գոյություն ունի և գրելու ենթակա է։
-x fileՍտուգում է, թե արդյոք ֆայլը գոյություն ունի և այն կատարելի է։
file1 -nt file2 Ստուգում է, թե արդյոք այն ավելի նոր է file1Քան file2.
file1 -ot file2Ստուգում է, թե արդյոք այն ավելի հին է file1Քան file2.
-O file Ստուգում է, թե արդյոք ֆայլը գոյություն ունի և արդյոք այն պատկանում է ներկայիս օգտատիրոջը։
-G fileՍտուգում է, թե արդյոք ֆայլը գոյություն ունի և արդյոք դրա խմբի ID-ն համապատասխանում է ընթացիկ օգտատիրոջ խմբի ID-ին։

Այս հրամանները, ինչպես նաև այսօր քննարկված շատ ուրիշներ, հեշտ է հիշել: Դրանց անունները, լինելով տարբեր բառերի հապավումներ, ուղղակիորեն ցույց են տալիս կատարվող ստուգումները:

Եկեք փորձենք հրամաններից մեկը գործնականում.

#!/bin/bash
mydir=/home/likegeeks
if [ -d $mydir ]
then
echo "The $mydir directory exists"
cd $ mydir
ls
else
echo "The $mydir directory does not exist"
fi

Այս սկրիպտը, տրված առկա գրացուցակում, կցուցադրի դրա պարունակությունը։

Bash սցենարներ. սկսել
Ցուցադրել գրացուցակի պարունակությունը

Մենք կարծում ենք, որ դուք կարող եք ինքներդ փորձարկել մնացած հրամանները, դրանք բոլորն էլ աշխատում են նույն սկզբունքով։

Արդյունքները

Այսօր մենք խոսեցինք այն մասին, թե ինչպես սկսել bash սկրիպտներ գրել և քննարկեցինք մի քանի հիմնական բաներ։ Իրականում, bash ծրագրավորման թեման հսկայական է։ Այս հոդվածը 11 նյութերի մեծ շարքի առաջին մասի թարգմանությունն է։ Եթե ցանկանում եք շարունակել հենց հիմա, ահա այդ նյութերի բնօրինակների ցանկը։ Հարմարության համար այստեղ ներառված է նաև այն, որը դուք հենց նոր կարդացիք։

  1. Bash սկրիպտ քայլ առ քայլ — այստեղ մենք խոսում ենք այն մասին, թե ինչպես սկսել bash սկրիպտներ ստեղծել, դիտարկվում է փոփոխականների օգտագործումը, նկարագրվում են պայմանական կառուցումները, հաշվարկները, թվերի, տողերի համեմատությունները, ֆայլերի մասին տեղեկատվության որոնումը։
  2. Bash սկրիպտինգ, մաս 2, Bash-ը հրաշալի է — այստեղ բացահայտվում են for և while ցիկլերի հետ աշխատելու առանձնահատկությունները։
  3. Bash սկրիպտավորում Մաս 3, Պարամետրեր և տարբերակներ — Այս նյութը նվիրված է հրամանի տողի պարամետրերին և բանալիներին, որոնք կարող են փոխանցվել սկրիպտներին, որոնք աշխատում են օգտատիրոջ մուտքագրած տվյալների հետ և որոնք կարող են կարդացվել ֆայլերից։
  4. Bash սկրիպտավորում Մաս 4, Մուտք և ելք — այստեղ մենք խոսում ենք ֆայլերի նկարագրիչների և դրանց հետ աշխատելու, մուտքային, ելքային, սխալների հոսքերի, ելքային վերահղման մասին։
  5. Bash Scripting Մաս 5, Սիգհալներ և Աշխատանքներ — այս նյութը նվիրված է Linux ազդանշաններին, դրանց մշակմանը սկրիպտներում և սկրիպտների ժամանակացույցով գործարկմանը։
  6. Bash սկրիպտավորում Մաս 6, Ֆունկցիաներ — այստեղ դուք կարող եք իմանալ սկրիպտներում ֆունկցիաներ ստեղծելու և օգտագործելու, գրադարաններ մշակելու մասին։
  7. Bash սկրիպտավորում, մաս 7, sed-ի օգտագործումը — Այս հոդվածը վերաբերում է հոսքային տեքստային խմբագրիչ sed-ի հետ աշխատանքին։
  8. Bash սկրիպտավորում Մաս 8, awk-ի օգտագործումը — այս նյութը նվիրված է awk տվյալների մշակման լեզվով ծրագրավորմանը։
  9. Bash սկրիպտավորում Մաս 9, Կանոնավոր արտահայտություններ — այստեղ կարող եք կարդալ bash սկրիպտներում կանոնավոր արտահայտությունների օգտագործման մասին։
  10. Bash սկրիպտավորում Մաս 10, Գործնական օրինակներ — ահա օգտատերերին ուղարկվող հաղորդագրությունների հետ աշխատելու տեխնիկան, ինչպես նաև սկավառակի մոնիթորինգի մեթոդը։
  11. Bash սկրիպտավորում Մաս 11, Ակնկալեք հրաման — այս նյութը նվիրված է Expect գործիքին, որը կարող է օգտագործվել ինտերակտիվ կոմունալ ծառայությունների հետ փոխազդեցությունը ավտոմատացնելու համար։ Մասնավորապես, խոսքը Expect սկրիպտների և դրանց bash սկրիպտների և այլ ծրագրերի հետ փոխազդեցության մասին է։

Մենք կարծում ենք, որ այս հոդվածաշարի հիանալի կողմերից մեկն այն է, որ այն սկսվում է պարզ և բոլոր հմտությունների մակարդակների օգտատերերի համար հարմար մի բանով, ապա աստիճանաբար հանգեցնում է բավականին լուրջ թեմաների՝ բոլորին հնարավորություն տալով սկսել Linux հրամանային տողի սկրիպտավորումը։

Սիրելի՛ ընթերցողներ, մենք խնդրում ենք bash ծրագրավորման գուրուներին պատմել, թե ինչպես են հասել վարպետության բարձունքներին, կիսվել իրենց գաղտնիքներով, և սպասում ենք տպավորությունների նրանցից, ովքեր հենց նոր են գրել իրենց առաջին սցենարը։

Bash սցենարներ. սկսել

Հարցմանը կարող են մասնակցել միայն գրանցված օգտվողները։ Մուտք գործել, խնդրում եմ:

Թարգմանե՞լ հոդվածաշարի մնացած մասը։

  • Yes!

  • Ոչ, դա անհրաժեշտ չէ։

Քվեարկել է 1030 օգտատեր։ 106 օգտատեր ձեռնպահ է մնացել։

Source: www.habr.com