V každémprogramování jazykové proměnné hraje důležitou roli , při skriptování shellu Linux používáme dva typy proměnných:Proměnné definované systémem &Proměnné definované uživatelem .
Proměnná ve skriptu shellu je prostředkem odkazování numerický nebo hodnota znaků . A na rozdíl od formálních programovacích jazyků nevyžaduje skript shellu, abyste deklarovali typ pro vaše proměnné
V tomto článku probereme proměnné, jejich typy a jak nastavit a používat proměnné ve skriptování shellu.
Systémem definované proměnné:
Toto jsou proměnné, které vytváří a udržuje samotný Operační systém (Linux). Obecně jsou tyto proměnné definovány VELKÝMI PÍSMENY . Tyto proměnné můžeme vidět pomocí příkazu “$ set “. Některé ze systémově definovaných proměnných jsou uvedeny níže:
Chcete-li vytisknout hodnotu výše uvedených proměnných, použijte příkaz echo jak je uvedeno níže:
# echo $HOME
# echo $USERNAME
Do těchto proměnných prostředí se můžeme dostat z vašich skriptů pomocí názvu proměnné prostředí, kterému předchází znak dolaru. To je ukázáno v následujícím skriptu:
$ cat myscript
#!/bin/bash
# zobrazí informace o uživateli ze systému.
echo “Informace o uživateli pro ID uživatele:$USER”
echo UID:$UID
echo HOME:$HOME
Všimněte si, že proměnné prostředí v příkazech echo jsou při spuštění skriptu nahrazeny jejich aktuálními hodnotami. Všimněte si také, že se nám podařilo umístit $USER systémová proměnná v dvojitých uvozovkách v prvním řetězci a skript shellu byl stále schopen zjistit, co máme na mysli. Existuje nevýhoda k použití této metody však. Podívejte se, co se stane v tomto příkladu:
$ echo “Cena položky je 15 USD”
Cena položky je 5
To zjevně nebylo zamýšleno. Kdykoli skript vidí znak dolaru v uvozovkách, předpokládá, že odkazujete na proměnnou. V tomto příkladu se skript pokusil zobrazit proměnnou $1 (která nebyla definována) a poté číslo 5. Chcete-li zobrazit skutečný znak dolaru, musíte předcházet to sobráceným lomítkem:
$ echo “Cena položky je \$15”
Cena položky je 15 $
To je lepší. Zpětné lomítko umožnilo skriptu shell interpretovat znak dolaru jako skutečný znak dolaru, nikoli proměnná.
Uživatelsky definované proměnné:
Tyto proměnné jsou definovány uživateli . Shell skript nám umožňuje nastavit a používat naše vlastní proměnné v rámci scénáře. Nastavení proměnných vám umožňuje dočasně ukládat data a používat jej v celém skriptu, čímž se skript shellu více podobá skutečnému počítačovému programu.
Uživatelské proměnné může být libovolný textový řetězec o délce až 20 písmen , číslice , nebo znak podtržítka . Uživatelské proměnné rozlišují velká a malá písmena, takže proměnná Var1 se liší od proměnné var1. Toto malé pravidlo často dostane začínající programátory skriptů do problémů.
Hodnoty se přiřazují uživatelským proměnným pomocí rovnátka. Mezi proměnnou, rovnítkem a hodnotou se nesmí objevit žádné mezery (další problémové místo pro nováčky). Zde je několik příkladů přiřazování hodnot uživatelským proměnným:
var1=10
var2=-57
var3=testování
var4=“ještě další testování“
Skript prostředí automaticky určuje typ dat používá se pro hodnotu proměnné. Proměnné definované v shell skriptu si zachovávají své hodnoty po celou dobu životnosti shell skriptu, ale jsou odstraněny, když je shell skript dokončen.
Stejně jako na systémové proměnné lze na uživatelské proměnné odkazovat pomocí znaku dolaru:
$ test kočky3
#!/bin/bash
# testovací proměnné
dnů=10
guest=”Katie”
echo “$guest se přihlásil před $days dny”
days=5
guest=”Jessica”
echo “$host se přihlásil před $days dny”
$
Spuštění skriptu vytvoří následující výstup:
$ chmod u+x test3
$ ./test3
Katie se přihlásila před 10 dny
Jessica se přihlásila před 5 dny
$
Pokaždé, když je na proměnnou odkazováno , vytvoří hodnotu, která je mu aktuálně přiřazena. Je důležité si uvědomit, že při odkazování na hodnotu proměnné používáte znak dolaru , ale když odkazujete na proměnnou, abyste jí přiřadili hodnotu, nepoužíváte znak dolaru. Zde je příklad toho, co mám na mysli:
$ cat test4
#!/bin/bash
# přiřazení hodnoty proměnné jiné proměnné
value1=10
value2 =$value1
echo Výsledná hodnota je $value2
$
Když použijete hodnotu z value1 proměnnou v příkazu přiřazení, musíte stále používat znak dolaru. Tento kód vytváří následující výstup:
$ chmod u+x test4
$ ./test4
Výsledná hodnota je 10
$
Pokud zapomenete znak dolaru a řádek přiřazení hodnoty 2 bude vypadat takto:
value2=value1
získáte následující výstup:
$ ./test4
Výsledná hodnota je hodnota1
$
Bez znaku dolaru shell interpretuje název proměnné jako normální textový řetězec , což s největší pravděpodobností není to, co jste chtěli.
Použití symbolu Backtick (`) v proměnných shellu:
Zaškrtnutí umožňuje můžete přiřadit výstup příkazu shellu proměnné. I když se to nezdá moc, je to hlavní stavební kámen skriptu programování. Celý příkaz příkazového řádku musíte obklopit znaky backtick:
testing=`date`
Shell spustí příkaz v rámci backticks a přiřadí výstup k testování proměnné. Zde je příklad vytvoření proměnné pomocí výstupu z normálního příkazu shellu:
$ test kočky5
#!/bin/bash
# pomocí znaku backtick
testing=`date`
echo “ Datum a čas jsou:” $testing
$
Proměnná testování přijímá výstup z příkazu date a používá se v příkazu echo k jeho zobrazení. Spuštění skriptu shellu vytvoří následující výstup:
$ chmod u+x test5
$ ./test5
Datum a čas jsou:Po 31. ledna 20:23:25 EDT 2011
Poznámka :V bash můžete také použít alternativu $(…) syntaxe namísto backtick (`), což má tu výhodu, že se znovu vrací.
Příklad :$ echo ”Dnešní datum a čas je:” $(date)
Dnešní datum a čas je:neděle 27. července 16:26:56 IST 2014
Přečtěte si také : 9 příkladů příkazů „diff“ v systému Linux