Ħarsa tal-Varjabbli tal-Linux fil-Lingwa ta' Scripting Shell - Parti 9


Diġà ktibna sensiela ta' artikli dwar Linux Shell Scripting li dak iż-żmien intlaqgħet tajjeb u kienet rilevanti ħafna anke issa. Hawnhekk hawn il-link għall-kollezzjoni ta' artikli dwar script shell.

  1. Tgħallem Linux Shell Scripting

Hawnhekk f'dan l-artikolu se naraw il-varjabbli, l-eżekuzzjoni tagħha u l-implimentazzjoni tagħha fl-iskrittura tal-qoxra.

L-output ta 'kmand jista' jiġi ridirett lejn output standard jew fajl u jista 'jinħażen f'varjabbli, ukoll. Jekk l-output ta 'kmand huwa kbir biżżejjed b'tali mod li ma taqbilx mal-iskrin aħna jitħalla biss bl-għażla li jiffrankaw l-output għal fajl għal f'varjabbli. Vantaġġ wieħed tal-iffrankar tal-output għal varjabbli huwa veloċità tal-eżami aktar mgħaġġla. Il-varjabbli jiġu ffrankati fil-memorja u għalhekk għandhom tendenza li jkunu veloċi meta mqabbla mal-irkupru mill-fajl.

Il-varjabbli huma komponent importanti użat fl-iskript tas-Shell u huma ddikjarati bl-użu tal-kmand bash \Iddikjara. Biex tiddikjara varjabbli ngħid 'livell', irridu nwettqu l-kmand ta' hawn taħt.

$ declare LEVEL

Nota: Għandna bżonn nużaw \typecast, dikjarazzjoni mibnija għall-kompatibilità tal-qoxra tal-korn. Id-'dikjarazzjoni' hija aktar avvanzata u fiha l-karatteristiċi kollha, għalhekk hija rakkomandata meta tuża BASH.

  1. Isem varjabbli għandu jiġġustifika, l-użu ta' varjabbli fl-iskrittura.
  2. L-użu tal-istess isem varjabbli matul il-programm huwa rakkomandat ħafna.
  3. Isem tal-varjabbli jista' jkun b'ittri kbar kif ukoll zgħar iżda b'konvenzjoni l-kmandi tal-qoxra huma b'ittri żgħar u għalhekk għandna nużaw l-isem tal-varjabbli f'ittri kbar, sabiex inneħħu kull konfużjoni. eż., TOTAL_BILLED_AMOUNT, SELL_REPORT, ORDER_RECEIPT, eċċ.

Varjabbli jista' jiġi assenjat valur bl-użu ta' sinjal ugwali (=). Biex nassenja string vojta għal varjabbli ma rridu nipprovdu ebda valur wara sinjal ugwali.

$ LEVEL =

Iċċekkja l-valur maħżun fil-varjabbli ‘LEVEL’ bħala.

$ printf "%i" $LEVEL

printf, il-kmand li ħafna mill-programmaturi 'C' huma konxji minnu, jistampa data. %i – Jirrappreżenta Integer. Nistgħu nissostitwixxuha b'%c għal Karattru jew %c għal string, kif u meta meħtieġ.

$LEVEL: Innota l-'$' li jaħdem bħala sostitut tal-valur għall-varjabbli 'LIVELL'.

$ printf "%i" $LEVEL
0

Assenja valur għall-varjabbli.

$ LEVEL=0

Iċċekkja d-dejta maħżuna fil-varjabbli.

$ printf "%i" $LEVEL
0

NOTA: Huwa interessanti li wieħed jinnota li fiż-żewġ każijiet, meta aħna ma assenjatx il-valur għall-varjabbli u meta aħna assenjati l-valur '0' lill-varjabbli 'LIVELL' outputs 0. Għalkemm l-output huma l-istess fiż-żewġ każijiet iżda script shell mankijiet kemm id-dikjarazzjoni varjabbli differenti.

Assenja valur ġdid għall-varjabbli.

$ LEVEL=121

Iċċekkja d-dejta maħżuna fil-varjabbli.

$ printf "%i" $LEVEL
121

Iddikjara hija kmand BASH u toħloq varjabbli biss meta tiġi eżegwita. Il-varjabbli hekk maħluqa tibqa' fil-memorja sakemm l-iskrittura tieqaf jew il-varjabbli tiġi meqruda.

$ unset LEVEL

BASH għandu aktar minn 50 varjabbli predefiniti. Xi wħud minn dawn il-varjabbli għandhom tifsira speċjali mehmuża ma 'BASH eż., varjabbli RANDOM joħroġ numru każwali. Jekk ma jkunx issettjat u mbagħad iddefinit mill-ġdid, il-valur varjabbli oriġinali jintilef għal dejjem. Għalhekk huwa rakkomandat li ma tuża ebda varjabbli definita minn sistema.

Hawnhekk hawn lista ta 'xi varjabbli BASH utli.

  1. BASH—L-isem sħiħ ta' Bash.
  2. BASH_ENV—Fi script shell, l-isem tal-fajl tal-profil esegwit qabel ma nbeda l-iscript.
  3. BASH_VERSION—Il-verżjoni ta' Bash (pereżempju, 2.04.0(1)-rilaxx).
  4. KOLONNI—In-numru ta' karattri għal kull linja fuq il-wiri tiegħek (pereżempju, 80).
  5. HOSTNAME—L-isem tal-kompjuter. Taħt xi verżjonijiet tal-Linux, dan jista 'jkun l-isem tal-magna. Fuq oħrajn, jista' jkun isem ta' dominju kwalifikat bis-sħiħ.
  6. HOSTTYPE—Tip ta' kompjuter.
  7. HOME—L-isem tad-direttorju tad-dar tiegħek.
  8. OSTTYPE—L-isem tas-sistema operattiva.
  9. PATH—Lista separata mill-kolon ta' mogħdijiet ta' tfittxija biex issib kmand biex tesegwixxi.
  10. PPID—L-ID tal-proċess tal-proċess prinċipali tal-qoxra.
  11. PROMPT_COMMAND—Kmand biex tesegwixxi qabel l-issettjar tas-sekwenza fil-pront primarja tal-PS1.
  12. PWD—Id-direttorju tax-xogħol kurrenti (kif stabbilit mill-kmand cd).
  13. RANDOM — Jirritorna numru każwali bejn 0 u 32767 kull darba li jiġi referenzjat.
  14. QOXRA—Il-qoxra preferuta biex tuża; għal programmi li jibdew qoxra għalik.
  15. TERM—It-tip ta' emulazzjoni tat-terminal (pereżempju, console).

Ir-Regola tal-Qsim tal-Kelma.

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

AND

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

Fiż-żewġ każijiet l-output jibqa' l-istess. Allura x'inhi d-differenza fir-riżultat waqt li tuża l-kwotazzjoni?

Ejja niċċekkja l-istess b'dejta varjabbli differenti.

$ 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

Biex ma nsemmux, l-output mhuwiex korrett. BASH qed jieħu l-ispazju wara '0' bħala terminazzjoni u għalhekk il-valur tal-varjabbli huwa stabbilit bħala '0'. Issa nippruvaw nużaw kwotazzjoni għal varjabbli kif hawn taħt.

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

Xorta waħda r-riżultat mhux korrett. BASH ħa l-valuri varjabbli u neħħa l-ispazji kollha bejniethom. Għalhekk printf ma interpretax 0,1,2,3,4,5 bħala valuri distinti. Allura x'inhi s-soluzzjoni?

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

Iva! It-tqegħid tas-sostituzzjoni tal-Varjabbli taħt il-kwotazzjonijiet hija s-soluzzjoni. Il-kwotazzjonijiet jiġbru l-karattri fil-qoxra u jinterpretaw il-karattri speċjali b'mod sinifikanti.

Il-kwotazzjonijiet jistgħu jintużaw back-to-back u hija idea tajba li tagħlaq sostituzzjonijiet varjabbli bil-kwotazzjonijiet. Barra minn hekk tista' tintuża biex tissepara t-test ġenerali mill-kwotazzjonijiet. Hawn eżempju.

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

Is-separazzjoni ta' biċċiet tat-test ikkwotat bl-ispazju tirriżulta fl-istess problema kif diskuss hawn fuq. Il-bash se jittratta l-ispazju abjad bħala terminazzjoni. Mod ieħor ta 'sostituzzjoni varjabbli huwa.

$ LEVEL=5

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

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

Il-kwotazzjonijiet uniċi jirrestrinġu lil BASH milli jistampa karattri speċjali.

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

Backslash jaħdem bħal kwotazzjoni waħda għal karattru wieħed. Ħsibt kif se tipprintja (\)?

$ printf "%c" "\""

Meta %q miġbura ma' printf, jipprovdi backslash wara kull kelma biex jiżgura l-ispazjar tal-kliem.

$ LEVEL=5

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

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

Dak kollu għalissa. Aħna dejjem nippruvaw nipprovdu lill-qarrejja tagħna b'artikli li huma utli għalihom kull tant żmien. L-artikolu kopert hawn fuq huwa vast u għalhekk il-bqija tas-suġġetti b'eżempji se jiġu prodotti fl-artiklu li jmiss li se jinkludi 'Attributi ta' varjabbli', 'Esportazzjoni ta' varjabbli' eċċ.

Sa dakinhar Ibqa' sintonizzat u konness ma' linux-console.net. Tinsiex tagħtina l-feedback siewi tiegħek fit-taqsima tal-kummenti hawn taħt.