'Linux-variabelen' begrijpen en schrijven in Shell Scripting - Deel 10
De Linux shell-scripttaal is altijd een hot topic geweest en zal dat ook in de toekomst blijven. De Shell-scripttaal is magisch en het is zo gemakkelijk om een programma in scripttaal te maken, net als in elke andere taal. Het vereist echter een diepgaande kennis van wat we doen en wat het resultaat ervan is.
Alle shell-scriptingartikelen die we voor onze lezers hebben geschreven, worden zeer gewaardeerd, inclusief de laatste “An Insight of Linux Variables”. We breiden het laatste artikel uit naar een nieuw niveau.
Variabele attributen
Elke variabele in de Linux-omgeving heeft bepaalde opties, en deze worden ‘attributen’ genoemd. Deze opties of attributen kunnen, indien nodig, afhankelijk van de situatie, Aan en Uit worden gezet met behulp van het commando “declare ”.
Een voorbeeld van een variabel attribuut is het gebruik van een schakelaar, bijvoorbeeld '-i', die het integer-attribuut voor de corresponderende variabele inschakelt. Zelfs als een niet-numerieke waarde wordt doorgegeven aan de schakelaar ‘-i’, zal er geen foutmelding verschijnen en wordt ‘0’ uitgevoerd als geheeltallige interpretatie. Hier wordt het duidelijker uit het onderstaande voorbeeld.
Declareer een variabele Integer, bill=121
avi@localhost:~$ declare -i bill=121
Print de waarde van de variabele factuur.
avi@localhost:~$ printf "%d\n" "$bill"
121
Laat de variabelewaarde een string zijn. De variabele factuur is al aangegeven, u hoeft deze niet een tweede keer aan te geven. Verander gewoon de waarde van de variabele als.
avi@localhost:~$ bill=tecmint
Druk nu opnieuw de waarde van de variabele factuur af.
avi@localhost:~$ printf "%d\n" "$bill"
0
Let op ‘0‘ op de plaats van de foutmelding.
De vraag is nu: hoe ken je de attributen van reeds gedeclareerde variabelen?
avi@localhost:~$ declare -p bill
declare -i bill="121"
Hier komt een -p (staat voor print) schakelaar te hulp.
Nogmaals, wat moet ik doen om de attributen van een variabele uit te schakelen?
Om de attributen van een variabele Uit uit te schakelen, hebben we alleen maar een + (plus) teken nodig vlak voor de schakelaar. Hier wordt het duidelijker uit het onderstaande voorbeeld.
Schakel het integer-attribuut voor de bovenstaande variabele uit.
avi@localhost:~$ declare +i bill
Controleer de waarde van de variabele.
avi@localhost:~$ printf "%d\n" "$bill"
bash: printf: bill: invalid number
0
Druk nu de waarde van de variabele af met behulp van de schakelreeks.
avi@localhost:~$ printf "%s\n" "$bill"
tecmint
Hier in het bovenstaande voorbeeld kon bash niet-numerieke waarden niet als fout beoordelen, maar printf interpreteert wat een getal zou kunnen zijn en wat niet.
Alleen-lezen variabelen
Je hebt misschien wel eens gehoord van Alleen-lezen geheugen (ROM), maar wat is een alleen-lezen variabele? Heeft het enige gelijkenis met ROM?
Welnu, alleen-lezen variabelen zoals alleen-lezen geheugen zijn iets waarvan de waarde niet meer kan worden gewijzigd zodra deze is toegewezen. Daarom heet het alleen-lezen. U kunt voor die variabele geen nieuwe waarde schrijven, bewerken of wijzigen. Hier is een illustratie met een voorbeeld.
Maak een alleen-lezen (-r) variabelenaam, waarvan de waarde "linux-console.net" is.
avi@localhost:~$ declare -r name="linux-console.net"
Printf de waarde van de hierboven aangegeven variabele.
avi@localhost:~$ printf "%s\n" "$name"
linux-console.net
Probeer de waarde van de variabele te wijzigen.
avi@localhost:~$ declare -r name="Avishek"
bash: declare: name: readonly variable
Zoals hierboven besproken kunnen de attributen van een alleen-lezen variabele worden gewijzigd met behulp van het ‘+’ teken.
Variabelen exporteren in Linux
Alle shellvariabelen die in een shellscript zijn gedeclareerd, zijn beschikbaar totdat het script wordt uitgevoerd. Buiten het script bestaat de variabele uit het script niet. Het proces waarbij variabelen buiten het script beschikbaar worden gesteld, wordt het exporteren van variabelen genoemd.
Een variabele kan buiten de shell worden geëxporteerd met behulp van de schakelaar declare -x (export), waarmee de shell wordt erkend wat u wilt exporteren. Een schakelaar voor het declareren van exporten kan worden gebruikt als.
avi@localhost:~$ declare -x variable=”Constant_Value”
Alle wijzigingen die aan de variabele zijn aangebracht terwijl het script actief is, gaan verloren wanneer de variabele buiten het script wordt geëxporteerd. Het exporteren van variabelen is erg belangrijk bij shell-scripting.
We willen een variabele hebben die alleen-lezen moet zijn en buiten het script beschikbaar moet zijn. We moeten tegelijkertijd switch -r en switch -x gebruiken.
avi@localhost:~$ declare -rx variable=”Constant_Value”
Omgevingsvariabelen
De variabelen die worden gedeeld tussen het programma en het programma dat ze uitvoert. Omgevingsvariabelen kunnen worden geëxporteerd, maar de attributen kunnen er niet aan worden toegewezen.
Bovenstaande theorie praktisch begrijpen. Hier hebben we twee scripts 0.sh en 1.sh.
0.sh
#!/bin/bash
declare -rx name=Tecmint
bash 0.sh
exit 0
En het tweede script is.
1.sh
#!/bin/bash
printf "%s\n" "$name"
name=linux-console.net
printf "%s\n" "$name"
exit 0
Wat hier aan de hand is, is dat een variabele (naam) als alleen-lezen wordt gedeclareerd en wordt geëxporteerd en onmiddellijk daarna wordt dat tweede script aangeroepen.
Het tweede script printte zojuist de variabele uit het eerste script dat werd geëxporteerd in de eerste printf-instructie. In de tweede printf-instructie wordt de nieuwe waarde weergegeven die is toegewezen aan de variabele ‘naam‘.
U hoeft zich geen zorgen te maken dat de variabele alleen-lezen was. Hoe kan deze opnieuw worden toegewezen? Weet u niet meer: “Alle wijzigingen die aan de variabele zijn aangebracht terwijl het script actief is, gaan verloren wanneer de variabele buiten het script wordt geëxporteerd. ”
Referenties
Met het commando declare zijn alle onderstaande schakelaars en hun combinaties toegestaan.
- -a : Declareert een array.
- -f: weergavefunctie en definitie.
- -F: functienaam weergeven.
- -r : Declareer de variabele als alleen-lezen.
- -x : Variabele declareren als exporteerbaar.
- -I: Declareer de variabele als geheel getal.
Dat is het voor nu. In het volgende artikel zullen we manieren bespreken om variabelen te vervangen met behulp van de opdracht ‘eval’ en de variabelen die al in bash zijn gedefinieerd voordat we dit onderwerp sluiten. Ik hoop dat jullie genieten van je reis naar diepgaande scripting. Blijf tot die tijd op de hoogte en verbonden met linux-console.net.