Hogyan lehet a parancskimenetet változóként menteni a Bash-ban? PlatoBlockchain adatintelligencia. Függőleges keresés. Ai.

Hogyan lehet a parancskimenetet változóként menteni a Bash-ban?

Bevezetés

A bash szkriptekben egy parancs kimenetének változókhoz való hozzárendelése kényelmes lehet a parancsok kimeneteinek tárolásával és későbbi felhasználásával.

Ebben a rövid útmutatóban megvizsgáljuk, hogyan tárolhatja a parancs kimenetét változóként a Bashban.

A változók beállításának alapjai

A parancs kimenetének változóként való mentése a következőn keresztül érhető el parancshelyettesítés. A parancshelyettesítés egy burkoló, amely végrehajtja a parancsot a subshell környezet, és lecseréli a becsomagolt parancsot annak a környezetnek a szabványos kimenetére, amelyben a parancs fut. Erre a kimenetre később hivatkozni lehet, ha referenciaváltozóhoz csatlakozik!

A parancsok helyettesítése backtickekkel vagy zárójeles dollárjellel lehetséges:

`command`

$(command)

Vita folyik arról, hogy vajon `parancs` (backticks) ill $(parancs) (dollárjel és zárójel) „legjobb gyakorlatként” kell használni. $(command) jól működik a beágyazásban, és bizonyos esetekben javítja az olvashatóságot, de a következő példákban bármelyik szintaxist használhatja.

Ennek ellenére a parancs kimenetének hozzárendelése egy változóhoz a Bashban olyan egyszerű, mint:

VARIABLE=$(command)
echo "${VARIABLE}"

futás ${variable} úgy is ismert mint paraméterbővítés, és a referenciaváltozóhoz társított érték kiértékelésére és lekérésére szolgál.

Vessünk most egy pillantást egy változó beállítására egy parancshoz, amely megváltoztatja a kimeneti színt:

#!/bin/bash
GREEN=$(tput setaf 2)
echo "${GREEN}Please"

ORANGE=$(tput setaf 9)
echo "${ORANGE}Visit"

echo "${GREEN}Paris"

A részletben a tput parancsot, és ezeknek a parancsoknak a visszaadott értékét rendelte hozzá a színes szöveg nyomtatásához. A setaf megváltoztatja az előtér színét, a 3 (zöld) és 9 (narancs) pedig színkód.

Most áttérünk egy másik példára, amely több feltételt tartalmaz a különböző parancsok változóinak beállításához:

#!/bin/bash
PERSON=$(whoami)
echo -e "Hey ${PERSON}! I am Charlien"

DETAILS=$(uname -a)
echo -e "You're running this script on:n${DETAILS}n"

DATES=$(date)
echo -e "The script is being run on:n${DATES}n"

CREATE=$(touch $(date +"%d%m%Y").txt)
echo -e "A text file logging this run is created.${CREATE}n"

LOCATION=$(ls 
  -l *txt)
echo -e "Saved text file at: ${LOCATION}"

A fenti szkriptben a whoami parancs az aktuális felhasználó felhasználónevét adja vissza. A uname -a visszaadja a rendszerinformációkat, és a date visszaadja az aktuális időt és dátumot.

Jegyzet: A változók hozzárendelését láncolhatjuk úgy, hogy több parancsot adunk hozzá egyetlen beágyazott híváshoz. A CREATE változó tartalmazza a kimenetét touch parancsot, amely viszont létrehoz egy fájlt, és beállítja a fájl nevét a kimenetre date +"%d%m%Y parancs.

Tekintse meg gyakorlatias, gyakorlati útmutatónkat a Git tanulásához, amely tartalmazza a bevált gyakorlatokat, az iparág által elfogadott szabványokat és a mellékelt csalólapot. Hagyd abba a guglizást a Git parancsokkal, és valójában tanulni meg!

Végül hozzáadjuk a multiline parancs változó hozzárendelési koncepcióját fordított perjel hozzáadásával () között ls parancs -l jelölje be, hogy csak a szöveges fájlokat jelenítse meg *.txt. A fordított perjel egy escape karakter, amely tájékoztatja a shellt, hogy ne értelmezze a következő karaktert.

A echo parancsot, hozzáadtuk a -e zászlót a speciális karakter használatához, pl. n (újsor), a kimenet új sorban történő nyomtatásához.

A szkript végrehajtása után a következő eredményt kapjuk:

$ ./variable.sh

Következtetés

Ebben a rövid útmutatóban megvizsgáltuk, hogyan állíthatja be a parancs kimenetét egy változóra a Bashban. Megnéztük a szintaxisok közötti különbséget parancshelyettesítés, figyelembe véve az olvashatóság javulását $(command) backtick alapú helyettesítés felett. Ezután megnéztünk néhány példát az egyszerű hozzárendelésre és a láncolt/beágyazott kimenet-hozzárendelésre egyaránt.

Időbélyeg:

Még több Stackabus