Tento článek je součástí naší probíhající série výukových programů bash. Jako každý jiný programovací jazyk, i Bash poskytuje proměnné.
Proměnné Bash poskytují dočasné úložiště pro informace, které budou potřeba během životnosti programu.
Syntaxe:
VARNAME=VALUE
Poznámka: Kolem znaku „=“ přiřazení proměnné by neměla být žádná mezera. Když použijete VAR=VALUE, shell vidí „=“ jako symbol a považuje příkaz za přiřazení proměnné. Když použijete VAR =VALUE, shell předpokládá, že VAR musí být název příkazu a pokusí se jej provést.
Shell se nestará o typ proměnných. Proměnné mohou ukládat řetězce, celá čísla nebo reálná čísla.
Příklad.1 Použití jednoduchého přiřazení proměnné Bash
Následující skript vytvoří proměnnou s názvem LIST a přiřadí jí hodnotu „/var/opt/bin“. Chcete-li získat přístup k proměnným, stačí před název proměnné přidat $, což vám dá hodnotu uloženou v této proměnné.
$ cat sample.sh #!/bin/bash LIST="/var/opt/bin/" ls -l $LIST
Spusťte výše uvedený skript, který zobrazí /var/opt/bin v dlouhém formátu, jak je uvedeno níže.
$ ./sample.sh total 8 drwxrwsr-x 2 bin bin 4096 Jan 29 06:43 softwares drwxr-sr-x 5 root bin 4096 Sep 2 2009 llist
Proměnný rozsah Bash – místní a globální
V Bash nemusí být proměnné deklarovány. Ale když přistoupíte k proměnné, která se dosud nepoužívá, neobdržíte žádné varování ani chybové hlášení. Místo toho zobrazí prázdnou hodnotu.
Příklad 2. Prázdné hodnoty v proměnných bash
$ cat var1.sh #!/bin/sh echo "Variable value is: $VAR1" VAR1="GEEKSTUFF" echo "Variable value is: $VAR1" $ ./var1.sh Variable value is: Variable value is: GEEKSTUFF
Jak je uvedeno výše, zpočátku bude mít proměnná prázdnou hodnotu, po přiřazení můžete získat své hodnoty. Příkaz export se používá k exportu proměnných z interaktivního shellu. export ukazuje vliv na rozsah proměnných.
Příklad 3. Bash proměnné bez exportu
Přiřaďte proměnnou hodnotu v interaktivním shellu a pokuste se k ní přistupovat ve skriptu shellu.
$ VAR2=LINUX $ cat var2.sh #!/bin/bash echo "VAR2=$VAR2" VAR2=UNIX echo "VAR2=$VAR2"
Nyní spusťte výše uvedený skript, jak je ukázáno níže.
$ ./var2.sh VAR2= VAR2=UNIX
Přesto dostanete prázdnou hodnotu pro proměnnou VAR2. Shell ukládá proměnnou VAR2 s LINUX pouze v aktuálním shellu. Během provádění var2.sh spustí shell a spustí skript. Takže proměnná VAR2 nebude mít hodnotu ve vytvořeném shellu. Proměnnou musíte exportovat, aby ji zdědil jiný program – včetně skriptu shellu, jak je ukázáno níže.
Příklad 4. Export proměnné Bash
$ export VAR2=LINUX $ cat var2.sh #!/bin/bash echo "VAR2=$VAR2" VAR2=UNIX echo "VAR2=$VAR2"
Nyní spusťte výše uvedený skript.
$ ./var2.sh VAR2=LINUX VAR2=UNIX $ $echo $VAR2 LINUX
Nyní si můžete všimnout, že po provedení shell skriptu var2.sh je hodnota VAR2 LINUX. Protože proměnné nebudou předány zpět do vašeho interaktivního shellu, pokud skript nespustíte v aktuálním shellu.
Deklarování proměnné Bash
Pomocí příkazu deklarovat v bash můžeme omezit hodnotu přiřazenou proměnným. Omezuje vlastnosti proměnných. Volba v příkazu deklarace se používá k určení typu proměnné.
Syntaxe:
declare option variablename
- deklarovat je klíčové slovo Možnost
- může být:
- -r proměnná pouze pro čtení
- -i celočíselná proměnná
- -proměnná pole
- -f pro funkce
- -x deklaruje a exportuje do následujících příkazů prostřednictvím prostředí.
Příklad 5. Deklarace proměnné Bash pomocí deklarace
$ cat declar.sh #!/bin/bash declare -i intvar intvar=123 # Assigning integer value. echo $intvar intvar=12.3 #Trying to store string type value to an integer variable echo $intvar declare -r rovar=281 rovar=212 # Trying to change the readonly variable.
Z níže uvedeného provedení si můžete všimnout chybové zprávy, když proměnné přiřadíte neplatná data.
$ ./declar.sh 123 t.sh: line 6: 12.3: syntax error: invalid arithmetic operator (error token is ".3") 123 t.sh: line 11: rovar: readonly variable
Globální proměnné Bash
Globální proměnné se také nazývají proměnné prostředí, které budou dostupné všem shellům. Příkaz printenv se používá k zobrazení všech proměnných prostředí.
$ printenv SHELL=/bin/bash HISTSIZE=1000 SSH_TTY=/dev/pts/1 HOME=/root LOGNAME=root CVS_RSH=ssh
Místní proměnné Bash
Lokální proměnné jsou viditelné pouze v rámci bloku kódu. local je klíčové slovo, které se používá k deklaraci lokálních proměnných. Ve funkci má lokální proměnná význam pouze v rámci daného funkčního bloku.
Příklad 6. Globální a místní proměnné bash
$ cat localvar.sh #!/bin/bash pprint() { local lvar="Local content" echo -e "Local variable value with in the function" echo $lvar gvar="Global content changed" echo -e "Global variable value with in the function" echo $gvar } gvar="Global content" echo -e "Global variable value before calling function" echo $gvar echo -e "Local variable value before calling function" echo $lvar pprint echo -e "Global variable value after calling function" echo $gvar echo -e "Local variable value after calling function" echo $lvar
Spusťte výše uvedený skript
$ sh t.sh Global variable value before calling function Global content Local variable value before calling function Local variable value with in the function Local content Global variable value with in the function Global content changed Global variable value after calling function Global content changed Local variable value after calling function
Ve výše uvedeném výstupu budou mít lokální proměnné pouze prázdnou hodnotu před a po volání funkce. Jeho rozsah je pouze ve funkci. Z funkce zmizela, zatímco globální proměnná má aktualizovanou hodnotu i po provedení funkce.