Innsýn í Linux „breytur“ í Shell Scripting Language - Part 9


Við höfum nú þegar skrifað röð greina um Linux Shell Scripting sem var vel fagnað á þeim tíma og það var mjög viðeigandi jafnvel núna. Hér er tengill á greinasafnið um skeljaforskriftir.

  1. Lærðu Linux Shell Scripting

Hér í þessari grein munum við sjá breyturnar, framkvæmd þeirra og útfærslu þeirra í skeljaskrift.

Hægt er að beina úttak skipunar í staðlað úttak eða skrá og einnig er hægt að geyma það í breytu. Ef úttak skipunar er nógu stórt til að það passi ekki á skjáinn, þá höfum við aðeins möguleika á að vista úttak í skrá í breytu. Einn kostur við að vista framleiðsla í breytilegu er hraðari prófhraði. Breytur eru vistaðar í minni og þess vegna hefur það tilhneigingu til að vera hratt samanborið við endurheimt úr skrá.

Breytur eru mikilvægur hluti sem notaður er í Shell forskriftargerð og er lýst yfir með bash skipuninni „Declare“. Til að lýsa yfir breytu segðu „stigi“, þurfum við að framkvæma skipunina hér að neðan.

$ declare LEVEL

Athugið: Við þurfum að nota „typecast“, innbyggða yfirlýsingu fyrir samhæfni við kornskel. „Declare“ er fullkomnari og inniheldur alla eiginleika, þess vegna er mælt með því þegar BASH er notað.

  1. Nafn breytu verður að réttlæta, notkun breytu í handritinu.
  2. Það er eindregið ráðlagt að nota sama breytuheiti í öllu forritinu.
  3. Nafn breytu getur verið hástöfum jafnt sem lágstöfum en samkvæmt venju eru skel skipanir með lágstöfum og þess vegna ættum við að nota nafn breytu með hástöfum til að fjarlægja hvers kyns rugling. t.d. TOTAL_BILLED_AMOUNT, SELL_REPORT, ORDER_RECEIPT osfrv.

Hægt er að úthluta breytu gildi með því að nota jöfnunarmerki (=). Til að tengja tóman streng við breytu megum við ekki gefa upp neitt gildi á eftir jafnmerki.

$ LEVEL =

Athugaðu gildið sem er geymt í breytunni 'LEVEL' sem.

$ printf "%i" $LEVEL

printf, skipunin sem flestir „C“ forritarar eru meðvitaðir um, prentar gögn. %i – táknar heiltölu. Við getum skipt því út fyrir %c fyrir Character eða %c fyrir streng, eftir þörfum.

$LEVEL: Athugaðu '$' sem virkar sem gildisstaðgengill fyrir breytuna 'LEVEL'.

$ printf "%i" $LEVEL
0

Gefðu breytunni gildi.

$ LEVEL=0

Athugaðu vistuð gögn í breytu.

$ printf "%i" $LEVEL
0

ATHUGIÐ: Það er áhugavert að hafa í huga að í báðum tilfellunum, þegar við gáfum gildinu ekki til breytu og þegar við úthlutuðum gildinu '0' til breytunnar 'LEVEL', úttak 0. Þó að úttakið sé það sama í báðum tilfellum en skeljaforskrift meðhöndlar bæði breytuyfirlýsinguna á annan hátt.

Gefðu breytunni nýtt gildi.

$ LEVEL=121

Athugaðu vistuð gögn í breytu.

$ printf "%i" $LEVEL
121

Declare er BASH skipun og hún býr aðeins til breytu þegar hún er keyrð. Breytan sem þannig er búin til helst í minni þar til handritið hættir eða breytan er eytt.

$ unset LEVEL

BASH hefur yfir 50 breytur fyrirfram skilgreindar. Sumar þessara breyta hafa sérstaka merkingu sem fylgir BASH, t.d. breyta RANDOM gefur út slembitölu. Ef það er óstillt og síðan skilgreint aftur tapast upprunalega breytugildið að eilífu. Þess vegna er ráðlagt að nota ekki neina kerfisskilgreinda breytu.

Hér er listi yfir nokkrar gagnlegar BASH breytur.

  1. BASH—Heilt slóðnafn Bash.
  2. BASH_ENV—Í skeljaskriftu, nafn prófílskrárinnar sem keyrt var áður en skriftin var ræst.
  3. BASH_VERSION—útgáfan af Bash (til dæmis 2.04.0(1)-útgáfa).
  4. DÚLAR—Fjöldi stafa í hverri línu á skjánum þínum (til dæmis 80).
  5. HOSTNAFN—Nafn tölvunnar. Í sumum útgáfum af Linux getur þetta verið nafn vélarinnar. Á öðrum getur það verið fullgilt lén.
  6. HOSTTYPE—Tegund tölvu.
  7. HEIMA—Nafnið á heimaskránni þinni.
  8. OSTYPE—Nafn stýrikerfisins.
  9. PATH—Listi aðskilinn með ristli yfir leitarslóðir til að finna skipun til að framkvæma.
  10. PPID—ferlisauðkenni yfirferlis skeljar.
  11. PROMPT_COMMAND—skipun til að keyra áður en PS1 aðalkvaðningarstrengurinn er stilltur.
  12. PWD—Núverandi vinnuskrá (eins og stillt er af cd skipuninni).
  13. RANDOM—skilar slembitölu á milli 0 og 32767 í hvert skipti sem vísað er í hana.
  14. SKEL—Skel sem ákjósanlegt er að nota; fyrir forrit sem hefja skel fyrir þig.
  15. TERM—gerð flugstöðvarhermi (til dæmis stjórnborð).

Reglan um orðaskiptingu.

$ LEVEL=0
$ printf "%i" $LEVEL
0

AND

$ LEVEL=”0”
$ printf "%i" $LEVEL
0

Í báðum tilfellum er framleiðsla sú sama. Svo hver er munurinn á niðurstöðunni þegar þú notar tilvitnun?

Við skulum athuga það sama með mismunandi breytilegum gögnum.

$ LEVEL=0 ; 1 ; 2 ; 3 ; 4 ; 5
bash: 1: command not found 
bash: 2: command not found 
bash: 3: command not found 
bash: 4: command not found 
bash: 5: command not found
$ printf "%i" $LEVEL
0

Svo ekki sé minnst á, framleiðslan er ekki rétt. BASH tekur bilið á eftir „0“ sem uppsögn og þess vegna er gildi breytu stillt sem „0“. Nú reynum við að nota tilvitnun fyrir breytur eins og hér að neðan.

$ LEVEL=”0 ; 1 ; 2 ; 3 ; 4 ; 5”
$ printf "%s" $LEVEL 
0;1;2;3;4;5

Samt er niðurstaðan ekki rétt. BASH tók breytugildin og fjarlægði öll bilin á milli þeirra. Þess vegna túlkaði printf ekki 0,1,2,3,4,5 sem sérstök gildi. Svo hver er lausnin?

printf "%s" "$LEVEL" 
0 ; 1 ; 2 ; 3 ; 4 ; 5

Já! Að setja breytuskiptin undir gæsalappir er lausnin. Tilvitnanir flokka persónur í skel og túlka sérstafina á þýðingarmikinn hátt.

Hægt er að nota tilvitnanir bak við bak og gott er að láta breytilega staðgöngu fylgja með tilvitnunum. Þar að auki er hægt að nota það til að aðgreina heildartexta frá tilvitnunum. Hér er dæmi.

$ LEVEL=5 
$ FLAG_MESSAGE="I HAVE CLEARED LEVEL""$LEVEL"". I Deserve appreciation." 
$ printf “%s” “$FLAG_MESSAGE”
“I HAVE CLEARED LEVEL5. I Deserve appreciation.”

Að aðskilja bita af tilvitnuðum texta með bili mun leiða til sama vandamáls og fjallað var um hér að ofan. The bash mun meðhöndla hvítt bil sem uppsögn. Önnur leið til breytilegrar skipti er.

$ LEVEL=5

$ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

$ printf “%s” "$FLAG_MESSAGE" 
“I HAVE CLEARED LEVEL 5. I Deserve appreciation.”

Stakar gæsalappir takmarkar BASH frá því að prenta sérstafi.

$ printf “%s” '$FLAG_MESSAGE'
“$FLAG_MESSAGE”

Bakstrik virkar eins og ein gæsalappa fyrir eina staf. Hefurðu hugsað hvernig þú ætlar að prenta (\)?

$ printf "%c" "\""

Þegar %q er flokkað með printf, gefur skástrik eftir hvert orð til að tryggja orðabil.

$ LEVEL=5

$ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

$ printf “%q” "$FLAG_MESSAGE" 
“I\ HAVE\ CLEARED\ LEVEL\ 5.\ I\ Deserve\ appreciation.”

Það er allt í bili. Við reynum alltaf að útvega lesendum okkar greinar sem nýtast þeim öðru hvoru. Greinin hér að ofan er umfangsmikil og þess vegna verða restin af efnisatriðum með dæmum framleidd í næstu grein sem mun innihalda „Eiginleika breytu“, „Útflutningur breytu“ o.s.frv.

Þangað til Fylgstu með og tengdu við linux-console.net. Ekki gleyma að veita okkur verðmæta endurgjöf þína í athugasemdahlutanum hér að neðan.