Zoeken op website

'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.

  1. -a : Declareert een array.
  2. -f: weergavefunctie en definitie.
  3. -F: functienaam weergeven.
  4. -r : Declareer de variabele als alleen-lezen.
  5. -x : Variabele declareren als exporteerbaar.
  6. -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.