Kurzusok
/
Bash
Bash
/
Tanterv
/
Változók
Vá

Változók ebben a kurzusban: Bash

{one: "1 feladat", other: "%{count} feladat"}

A(z) Változók fogalomról

Változók

A változók olyan helyek, ahol adatokat tárolhatsz. A Bash kétféle adatot ismer: stringeket és tömböket. A tömbökről később lesz szó.

Így rendelsz értéket egy változóhoz:

name="value"
Note

Fontos: az egyenlőségjel körül nem lehet szóköz!

Ha mégis van szóköz, mint ebben a példában,

x = 10

akkor a bash az x parancsot hívja meg a = és a 10 két argumentummal!

A változókat paramétereknek is nevezhetjük. Ebben a dokumentumban a két kifejezést felváltva használjuk.

Íme néhány fontos paraméter, amelyet a bash használ vagy beállít:

  • PATH: azon könyvtárak kettősponttal elválasztott listája, amelyekben a külső parancsokat keresi.
  • IFS: a belső mezőelválasztó. Alább meglátjuk, hogyan használjuk.
  • PWD: az aktuális munkakönyvtárad. Ugyanaz az értéke, mint a pwd parancs kimenetének.
  • RANDOM: egy álvéletlen egész szám 0 és 32767 között.
  • BASH_VERSION: a futó bash-példány verziószáma.

Változónevek

A változónév nagybetűkből, kisbetűkből, számokból és alulvonásból áll. Nem kezdődhet számmal.

Caution

Bevált gyakorlat, hogy kerüljük a csupa nagybetűs változóneveket. A shell ezt a konvenciót használja a saját paramétereinél, és nem szeretnéd véletlenül felülírni azokat a shellparamétereket, amelyeknek különleges jelentésük van. Például: 1, 2, 3

Paraméterkiterjesztés

Egy paraméter értékét a $varname szintaxissal kapod meg.

x=10
echo "The value of x is $x"

Hogy a változónév ne keveredjen a körülötte lévő szöveggel, kapcsos zárójelbe teheted a változónevet. Ha például a 10x10 stringet szeretnéd kiírni:

echo "${x}x$x"
# or
echo "${x}x${x}"

Néhány stílusútmutató az esetek többségében a kapcsos zárójelek használatát javasolja az olvashatóság és/vagy a következetesség érdekében.

Pozíciós paraméterek

Ahogy a Parancsok és argumentumok leckében szó volt róla, a parancsok fogadhatnak argumentumokat. A bash-szkriptek sem kivételek. A bash aktuális példányának argumentumait pozíciós paramétereknek nevezzük. Ezeket a speciális paraméterekkel kérheted le:

  • $1: az első pozíciós paraméter
  • $2 ... $9: a további paraméterek
  • ${10} ...: kétjegyű számoknál már kapcsos zárójel kell.
  • $0: az aktuális szkript neve.

A shellfüggvények argumentumai is pozíciós paraméterek, és pontosan ugyanígy kezeljük őket. A függvényekről egy későbbi leckében lesz szó bővebben.

Különleges pozíciós paraméterek

Néhány speciális paraméter segít a pozíciós paraméterek kezelésében.

  • $# értéke a pozíciós paraméterek száma.
  • "$@" értéke az összes pozíciós paraméter listája, mindegyik külön szóként.
  • "$*" értéke egyetlen string, amelyben az összes pozíciós paramétert egy karakter fűzi össze.
    • Az összefűző karakter a $IFS változó első karaktere, ami alapértelmezés szerint egy szóköz.

A "$@" a legbiztonságosabb módja annak, hogy a pozíciós paramétereket átadd egy másik parancsnak, miközben biztonságosan idézőjelben maradnak. Ezt használod arra is, hogy végigmenj a pozíciós paramétereken:

for arg in "$@"; do
    do_something_with "$arg"
done

A gyakorlatban a "$@"-t gyakrabban használjuk, mint a "$*"-ot.

Parancshelyettesítés

A bash-szkriptekben gyakran előforduló művelet, hogy elkapod egy parancs kimenetét, és eltárolod egy változóban. Ehhez a parancshelyettesítést használod.

var=$(command)

Ha például egy stringet csupa nagybetűssé szeretnél alakítani, ezt teheted:

text="Hello world!"
uppercase=$(echo "$text" | tr '[:lower:]' '[:upper:]')
echo "$uppercase"
# => HELLO WORLD!

Még néhány szó a paraméterkiterjesztésről

A bashben számos beépített lehetőség van a változók és stringek kezelésére, így nem kell külső parancsokat hívnod.

  • Szöveg csupa nagybetűssé alakítása. Az előző részben megmutattam, hogyan lehet a tr paranccsal nagybetűssé alakítani egy szöveget. Ha ezt bashben szeretnéd megtenni:

    echo "${text^^}"
    

    Hasonlóképpen a ${text,,} kisbetűssé alakítja az értéket.

  • Alapértelmezett érték megadása, ha a változó üres.

    default="nothing here"
    result=""
    echo "${result:-$default}"
    # => nothing here
    
  • Keresés és csere.

    text="Hello world!"
    echo "${text//[aeiou]/X}"
    # => HXllX wXrld!"
    

Sok más érdekes paraméterkiterjesztés is létezik: részstring kinyerése, a string hosszának lekérdezése, alapérték hozzárendelése, szöveg eltávolítása az érték elejéről vagy végéről, és még sok más. Olvass róluk a kézikönyvben.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg