GNU/Linux >> Znalost Linux >  >> Linux

Bash Beginner Series #2:Pochopení proměnných ve skriptování Bash Shell

Čas se mění, stejně jako proměnné!

Museli jste si hrát s proměnnými docela dost, pokud jste dělali nějaké programování.

Pokud jste s proměnnými nikdy předtím nepracovali, můžete si je představit jako kontejner, který uchovává část informace, která se může v průběhu času měnit.

Proměnné se při psaní bash skriptu vždy hodí a v tomto tutoriálu se naučíte používat proměnné ve vašich bash skriptech.

Použití proměnných ve skriptech bash shell

V posledním tutoriálu v této sérii jste se naučili psát program hello world v bash.

#! /bin/bash

echo 'Hello, World!'

Byl to jednoduchý scénář Hello World. Udělejme to lepší Hello World.

Pojďme tento skript vylepšit pomocí proměnných shellu tak, aby vítal uživatele jejich jmény. Upravte svůj skript hello.sh a použijte příkaz read k získání vstupu od uživatele:

#! /bin/bash

echo "What's your name, stranger?"

read name

echo "Hello, $name"

Nyní, když spustíte svůj skript hello.sh; vyzve vás k zadání vašeho jména a poté vás přivítá jakýmkoli jménem, ​​které mu zadáte:

[email protected]:~/scripts$ ./hello.sh 
What's your name, stranger?
Elliot
Hello, Elliot

Ve výše uvedeném příkladu jsem zadal Elliot jako své jméno a pak mě skript pozdravil „Ahoj, Elliot“. To je rozhodně mnohem lepší než obecný program „Ahoj, světe“. Nesouhlasíte?

Postupné vysvětlení výše uvedeného shell skriptu

Nyní si projdeme skript řádek po řádku, abychom se ujistili, že všemu rozumíte.

Nejprve jsem zahrnul řádek shebang, abych výslovně uvedl, že ke spuštění tohoto skriptu použijeme bash shell.

#!/bin/bash

Dále požádám uživatele, aby zadal své jméno:

echo "What's your name, stranger?"

To je jen jednoduchý příkaz echo pro tisk řádku na terminál; docela samovysvětlující.

Tady je linie, kde se všechna ta kouzla odehrávají:

read name

Zde jsem použil příkaz read k přenesení ovládání ze spuštěného skriptu na uživatele, takže uživatel může zadat jméno a poté uložit jakýkoli uživatel zadaný do proměnné 'name'.

Nakonec skript přivítá uživatele jeho jménem:

echo “Hello, $name”

Všimněte si, že před název proměnné musíte uvést znak dolaru, abyste získali hodnotu uloženou v názvu proměnné. Pokud vynecháte znak dolaru, zobrazí se místo něj „Dobrý den, jméno“.

Tento znak dolaru je známý jako operátor dereference ve skriptování bash.

Celá čísla, řetězce nebo znaky? Jak vytvořit různé typy dat proměnných v bash shell?

Pojďme si trochu více pohrát s proměnnými.

K vytvoření a nastavení hodnoty proměnné můžete použít rovnítko. Například následující řádek vytvoří proměnnou s názvem věk a nastaví její hodnotu na 27.

age=27

Po vytvoření proměnné věku můžete její hodnotu libovolně měnit.

age=3

Výše uvedený příkaz změní hodnotu proměnné věk z 27 na 3. Kdyby se jen časy mohly vrátit, slyším vás říkat!

Proměnné mohou obsahovat různé typy dat; proměnné mohou ukládat celá čísla, řetězce a znaky.

letter=’c’
color=’blue’
year=2020

Konstantní proměnné v bash shell

Můžete také vytvořit konstantní proměnnou, tedy proměnnou, jejíž hodnota se nikdy nezmění! To lze provést tak, že před název proměnné přidáte readonly příkaz:

readonly PI=3.14159

Výše uvedený příkaz vytvoří konstantní proměnnou PI a nastaví její hodnotu na 3,14159. Nyní nemůžete změnit hodnotu konstantní proměnné, pokud to zkusíte, dostanete chybu:

bash: PI: readonly variable

Jak vidíte, hodnotu konstantní proměnné můžete pouze číst, ale po jejím vytvoření již nikdy nemůžete změnit její hodnotu.

Záměny příkazů

Schopnost uložit výstup příkazu do proměnné se nazývá substituce příkazu a je to zdaleka jedna z nejúžasnějších funkcí bash.

Příkaz date je klasickým příkladem pro demonstraci substituce příkazů:

TODAY=$(date)

Výše uvedený příkaz uloží výstup data příkazu do proměnné TODAY. Všimněte si, jak je potřeba uzavřít příkaz date do páru závorek a znaku dolaru (vlevo).

Případně můžete příkaz také uzavřít do dvou zadních uvozovek:

TODAY=`date`

Metoda zpětné citace je starý způsob provádění substituce příkazů, a proto velmi doporučuji, abyste se jí vyhnuli a drželi se moderního přístupu:

variable=$(command)

Než odejdete, zkuste změnit skript Hello World na chytrý skript HelloWorld

Nyní, když jste se právě naučili, jak provádět substituci příkazů, mělo by smysl naposledy navštívit skript Hello World, abyste jej zdokonalili!

Minule jste požádali uživatele, aby zadal své jméno, aby ho skript pozdravil; tentokrát se nebudete ptát, váš skript to již ví!

Pomocí příkazu whoami spolu s nahrazením příkazu pozdravte každého, kdo spouští skript:

#! /bin/bash           

echo "Hello, $(whoami)"

Jak vidíte, stačily vám jen dva řádky! Nyní spusťte skript:

./hello.sh

Funguje to jako kouzlo!

Dobře, tímto se dostáváme na konec tohoto tutoriálu. To, co jste se právě naučili, si můžete procvičit řešením problémů a odkazovat na jejich řešení, pokud uvíznete nebo potřebujete nápovědu.

Bash Kapitola 2 Cvičné otázkyProblémy a jejich řešení k procvičení toho, co jste se právě naučili v této kapitole Bash-Kapitola-2-Procvičení-Otázky-Linux-Příručka.pdf29 KB

Doufám, že jste si práci s proměnnými shellu užili stejně jako já. Podívejte se na další kapitolu této série, kde pojednávám o tom, jak můžete předávat argumenty vašim shellovým skriptům.


Linux
  1. Ukládání výstupu příkazu do proměnné Shell?

  2. Funkce v proměnných Shell?

  3. Jak porovnávat řetězce ve skriptování Bash Shell

  1. Bash skriptování (I)

  2. Bash Beginner Series #9:Použití funkcí v Bash

  3. Bash Beginner Series #8:Loops in Bash

  1. Jak používat proměnné ve skriptování Shell

  2. Shell Scripting Část V:Funkce v Bash

  3. Pochopení proměnných v Bash Shell pod Linuxem