Weboldal keresés

Linux-parancs kimenetének hozzárendelése egy változóhoz


Amikor egy parancsot futtat, az valamilyen kimenetet produkál: vagy egy program eredménye tegyük elő, vagy állapot/hibaüzenet a program végrehajtásának részleteiről. Néha előfordulhat, hogy egy parancs kimenetét egy változóban szeretné tárolni, hogy egy későbbi műveletben felhasználhassa.

Ebben a bejegyzésben áttekintjük a shell-parancsok kimenetének változóhoz való hozzárendelésének különböző módjait, amelyek kifejezetten a shell-parancsfájlokhoz hasznosak.

A parancs kimenetének változóban tárolásához használhatja a shell parancshelyettesítő szolgáltatást az alábbi űrlapokon:

variable_name=$(command)
variable_name=$(command [option ...] arg1 arg2 ...)
OR
variable_name='command'
variable_name='command [option ...] arg1 arg2 ...'

Az alábbiakban néhány példa található a parancshelyettesítés használatára.

Ebben az első példában a who (amely megmutatja, hogy ki van bejelentkezve a rendszerbe) parancs értékét a CURRENT_USERS user változóban tároljuk:

CURRENT_USERS=$(who)

Ezután használhatjuk a változót az echo paranccsal megjelenített mondatban, így:

echo -e "The following users are logged on the system:\n\n $CURRENT_USERS"

A fenti parancsban: a -e jelző a használt escape szekvenciák értelmezését jelenti (például a \n újsor esetén). Az idő és a memória elvesztésének elkerülése érdekében egyszerűen hajtsa végre a parancshelyettesítést az echo parancsban az alábbiak szerint:

echo -e "The following users are logged on the system:\n\n $(who)"

Ezután a koncepció bemutatása a második forma használatával; az aktuális munkakönyvtárban lévő fájlok teljes számát eltárolhatjuk egy FILES nevű változóban, és később echo a következők szerint:

FILES=`sudo find . -type f -print | wc -l`
echo "There are $FILES in the current working directory."

Egyelőre ennyi, ebben a cikkben elmagyaráztuk a shell parancs kimenetének változóhoz való hozzárendelésének módszereit. Az alábbi visszajelzési szakaszon keresztül hozzáfűzheti gondolatait ehhez a bejegyzéshez.