Ko pišemo lupinske skripte, običajno vključimo druge manjše programe ali ukaze, kot so Awk operacije v naših skriptah. V primeru Awka moramo najti načine za prenos nekaterih vrednosti iz lupine v operacije Awk.
To lahko storimo z uporabo spremenljivk lupine v ukazih Awk, v tem delu serije pa smo se bodo naučili, kako dovoliti Awku uporabo spremenljivk lupine, ki lahko vsebujejo vrednosti, ki jih želimo posredovati Awku ukaze.
Awk lahko na dva načina omogočite za uporabo spremenljivk lupine:
Oglejmo si primer, ki ponazarja, kako lahko dejansko uporabite citiranje lupine, da nadomestite vrednost spremenljivke lupine v ukazu Awk. V tem primeru želimo poiskati uporabniško ime v datoteki /etc/passwd, filtrirajte in natisnite podatke o uporabnikovem računu.
Zato lahko zapišemo a test.sh
skript z naslednjo vsebino:
#!/bin/bash #preberite uporabniški vnos. read -p "Prosimo, vnesite uporabniško ime:" username #search za uporabniško ime v datoteki /etc /passwd in natisnite podrobnosti na zaslonu. cat /etc /passwd | awk "/ $ username/" '{print $ 0}'
Nato shranite datoteko in zapustite.
Razlaga ukaza Awk v datoteki test.sh
zgornji skript:
cat /etc /passwd | awk "/ $ username/" '{print $ 0}'
"/ $ uporabniško ime/"
- citiranje lupine, ki se uporablja za nadomestitev vrednosti spremenljivke lupine uporabniško ime v ukazu Awk. Vrednost uporabniško ime je vzorec, ki ga je treba iskati v datoteki /etc/passwd.
Upoštevajte, da je dvojni narekovaj zunaj skripta Awk, '{Print $ 0}'
.
Nato naredite skript izvedljiv in ga zaženite na naslednji način:
$ chmod +x test.sh. $ ./text.sh
Po zagonu skripta boste pozvani, da vnesete uporabniško ime, vnesite veljavno uporabniško ime in zadel Vnesite. Podrobnosti o uporabnikovem računu si boste ogledali v /etc/passwd datoteko, kot je prikazano spodaj:
Ta metoda je veliko enostavnejša in boljša v primerjavi s prejšnjo metodo. Glede na zgornji primer lahko izvedemo preprost ukaz za dokončanje naloge. Pri tej metodi uporabljamo -v
možnost, da spremenljivki Awk dodelite lupinsko spremenljivko.
Najprej ustvarite spremenljivko lupine, uporabniško ime
in mu dodelimo ime, ki ga želimo poiskati v /etc/passswd
mapa:
username = "aaronkilik"
Nato vnesite spodnji ukaz in pritisnite Enter:
# mačka /etc /passwd | awk -v name = "$ username" "$ 0 ~ name {print $ 0}"
Pojasnilo zgornjega ukaza:
-v
- Možnost Awk za razglasitev spremenljivkeuporabniško ime
- je spremenljivka lupineime
- je spremenljivka AwkPazljivo si oglejmo $ 0 ~ ime
znotraj skripta Awk, '$ 0 ~ name {print $ 0}'
. Spomnite se, ko smo pokrivali Operatorji primerjave Awk v 4. delu v tej seriji je bil eden od primerjalnih operaterjev vrednost ~
vzorec, kar pomeni: true, če se vrednost ujema z vzorcem.
The izhod (0 USD)
od mačji ukaz cevovod v Awk se ujema z vzorcem (aaronkilik)
v katerem iščemo /etc/passwdposledično je primerjalna operacija resnična. Vrstica z informacijami o uporabnikovem računu se nato natisne na zaslonu.
Zajeli smo pomemben del funkcij Awk, ki nam lahko pomaga pri uporabi spremenljivk lupine v ukazih Awk. Velikokrat boste v skripte lupine napisali majhne programe ali ukaze Awk, zato morate jasno razumeti, kako uporabljati spremenljivke lupine v ukazih Awk.
V naslednjem delu serije Awk se bomo poglobili v še en kritičen del funkcij Awk, to so izjave o nadzoru pretoka. Zato ostanite z nami in se učimo in delimo naprej.