Kif Ħalli Awk juża Varjabbli Shell - Parti 11


Meta niktbu skripts tal-qoxra, normalment ninkludu programmi jew kmandi iżgħar oħra bħal operazzjonijiet Awk fl-iskripts tagħna. Fil-każ ta 'Awk, irridu nsibu modi kif jgħaddu xi valuri mill-qoxra għall-operazzjonijiet Awk.

Dan jista 'jsir billi tuża varjabbli tal-qoxra fi ħdan il-kmandi Awk, u f'din il-parti tas-serje, se nitgħallmu kif inħallu lil Awk juża varjabbli tal-qoxra li jista' jkun fihom valuri li rridu ngħaddu lill-kmandi Awk.

Hemm possibilment żewġ modi kif tista' tippermetti lil Awk juża varjabbli tal-qoxra:

1. Bl-użu ta 'Shell Quoting

Ejja nagħtu ħarsa lejn eżempju biex turi kif tista' fil-fatt tuża l-kwotazzjoni tal-qoxra biex tissostitwixxi l-valur ta' varjabbli tal-qoxra fi kmand Awk. F'dan l-eżempju, irridu nfittxu username fil-fajl /etc/passwd, iffiltra u tipprintja l-informazzjoni tal-kont tal-utent.

Għalhekk, nistgħu niktbu skript test.sh bil-kontenut li ġej:

#!/bin/bash

#read user input
read -p "Please enter username:" username

#search for username in /etc/passwd file and print details on the screen
cat /etc/passwd | awk "/$username/ "' { print $0 }'

Minn hemm 'il quddiem, issalva l-fajl u oħroġ.

Interpretazzjoni tal-kmand Awk fl-iskrittura test.sh hawn fuq:

cat /etc/passwd | awk "/$username/ "' { print $0 }'

\/$username/ \ – kwotazzjoni tal-qoxra użata biex tissostitwixxi l-valur tal-isem tal-utent varjabbli tal-qoxra fil-kmand Awk. Il-valur tal-isem tal-utent huwa l-mudell li jrid jitfittex fil-fajl /etc/passwd.

Innota li l-kwotazzjoni doppja hija barra l-iskrittura Awk, ‘{ print $0 }’.

Imbagħad agħmel l-iskritt eżekutibbli u mexxiha kif ġej:

$ chmod  +x  test.sh
$ ./text.sh 

Wara li tmexxi l-iskrittura, tkun imħeġġeġ biex iddaħħal isem tal-utent, ittajpja isem tal-utent validu u agħfas Ikteb. Se tara d-dettalji tal-kont tal-utent mill-fajl /etc/passwd kif hawn taħt:

2. L-użu tal-Assenjazzjoni Varjabbli ta’ Awk

Dan il-metodu huwa ħafna aktar sempliċi u aħjar meta mqabbel mal-metodu wieħed hawn fuq. Meta wieħed iqis l-eżempju ta 'hawn fuq, nistgħu nħaddmu kmand sempliċi biex inwettqu x-xogħol. Taħt dan il-metodu, nużaw l-għażla -v biex nassenja varjabbli tal-qoxra għal varjabbli Awk.

L-ewwelnett, oħloq varjabbli tal-qoxra, username u jassenjaha l-isem li rridu nfittxu fil-fajl /etc/passwd:

username="aaronkilik"

Imbagħad ittajpja l-kmand hawn taħt u agħfas Enter:

# cat /etc/passwd | awk -v name="$username" ' $0 ~ name {print $0}'

Spjegazzjoni tal-kmand t'hawn fuq:

  1. -v – Għażla awk biex tiddikjara varjabbli
  2. username – hija l-varjabbli tal-qoxra
  3. isem – hija l-varjabbli Awk

Ejja nagħtu ħarsa bir-reqqa lejn $0 ~ name ġewwa l-iskrittura Awk, $0 ~ name {print $0}. Ftakar, meta koprejna l-operaturi tal-paragun Awk fil-Parti 4 ta 'din is-serje, wieħed mill-operaturi tal-paragun kien il-mudell tal-valur ~, li jfisser: veru jekk il-valur jaqbel mal-mudell.

Il-output($0) tal-kmand tal-qtates imdaħħal lil Awk jaqbel mal-mudell (aaronkilik) li huwa l-isem li qed infittxu fi /etc/passwd, bħala riżultat, il- operazzjoni ta 'tqabbil hija vera. Il-linja li fiha l-informazzjoni tal-kont tal-utent imbagħad tiġi stampata fuq l-iskrin.

Konklużjoni

Aħna koprejna sezzjoni importanti tal-karatteristiċi Awk, li jistgħu jgħinuna nużaw varjabbli tal-qoxra fi ħdan il-kmandi Awk. Ħafna drabi, int se tikteb programmi Awk żgħar jew kmandi fi ħdan skripts tal-qoxra u għalhekk, jeħtieġ li jkollok fehim ċar ta 'kif tuża varjabbli tal-qoxra fi ħdan il-kmandi Awk.

Fil-parti li jmiss tas-serje Awk, se ngħaddu f'sezzjoni kritika oħra tal-karatteristiċi Awk, jiġifieri dikjarazzjonijiet tal-kontroll tal-fluss. Mela ibqgħu għassa u ejja nkomplu nitgħallmu u naqsmu.