Ħ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.
- 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.
- Isem varjabbli għandu jiġġustifika, l-użu ta' varjabbli fl-iskrittura.
- L-użu tal-istess isem varjabbli matul il-programm huwa rakkomandat ħafna.
- 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.
- BASH—L-isem sħiħ ta' Bash.
- BASH_ENV—Fi script shell, l-isem tal-fajl tal-profil esegwit qabel ma nbeda l-iscript.
- BASH_VERSION—Il-verżjoni ta' Bash (pereżempju, 2.04.0(1)-rilaxx).
- KOLONNI—In-numru ta' karattri għal kull linja fuq il-wiri tiegħek (pereżempju, 80).
- 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ħ.
- HOSTTYPE—Tip ta' kompjuter.
- HOME—L-isem tad-direttorju tad-dar tiegħek.
- OSTTYPE—L-isem tas-sistema operattiva.
- PATH—Lista separata mill-kolon ta' mogħdijiet ta' tfittxija biex issib kmand biex tesegwixxi.
- PPID—L-ID tal-proċess tal-proċess prinċipali tal-qoxra.
- PROMPT_COMMAND—Kmand biex tesegwixxi qabel l-issettjar tas-sekwenza fil-pront primarja tal-PS1.
- PWD—Id-direttorju tax-xogħol kurrenti (kif stabbilit mill-kmand cd).
- RANDOM — Jirritorna numru każwali bejn 0 u 32767 kull darba li jiġi referenzjat.
- QOXRA—Il-qoxra preferuta biex tuża; għal programmi li jibdew qoxra għalik.
- 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.