Hvordan bruke $ og $ {} utvidelser i et skallskript

Hvordan bruke $ og $ {} utvidelser i et skallskript
Hvis du bruker et Linux -system, vet du kanskje allerede hvor avgjørende et skallgrensesnitt er for å samhandle med systemet ditt. På de fleste Linux -distribusjoner er Bash standardskallet som vi bruker for å kjøre kommandoer og utføre skript. Et skallskript er et sett med kommandoer som, når de utføres, brukes til å utføre en eller annen nyttig funksjon (er) på Linux. Dette .SH -fil, skrevet av en bruker, inneholder alle kommandoene som brukes til å utføre en oppgave, slik at vi ikke trenger å kjøre disse kommandoene manuelt, en etter en.

I denne opplæringen vil vi forklare to av de mest nyttige bash -utvidelsene som brukes i skallskript:

  • $ () - Kommandosubstitusjonen
  • $ - Parameterstatning/variabel utvidelse

En utvidelse i Shell utføres på manuset etter at det er delt inn i symboler. Et token er en sekvens av tegn som er betraktet som en enkelt enhet av skallet. Det kan enten være et ord eller en operatør.

Vi har kjørt alle eksemplene og skriptene som er nevnt i denne artikkelen på et Debian 10 Buster -system. Imidlertid kan du enkelt gjenskape dem på de fleste Linux -skjell. Vi bruker standard Debian -kommandolinjen, terminalen, for denne opplæringen. På Debian kan du få tilgang til den gjennom søkelagerets søkelinje som følger:

For å få tilgang til applikasjonslageret, treffer du Super/Windows -tasten på tastaturet.

$ () Kommandosubstitusjon

I følge den offisielle GNU Bash Reference Manual:

“Kommandosubstitusjon lar utdataene fra en kommando erstatte selve kommandoen. Bash utfører utvidelsen ved å utføre kommandoen og erstatte kommandosubstitusjonen med standardutgangen til kommandoen, med eventuelle etterfølgende newlineer slettet. Innbygde newlines blir ikke slettet, men de kan fjernes under orddelingen.” Kommandosubstitusjon oppstår når en kommando er vedlagt som følger:

$ (kommando)
eller
'kommando'

Følgende Echo -kommandoer erstatter for eksempel datakommandoen som deres innspill:

$ ekko $ (dato)
$ ekko 'Dato'

Du kan også bruke kommandosubstitusjon for å tildele verdi til en variabel. For eksempel vil vi skrive ut dagens dato gjennom variabelen i dag som følger:

$ I dag = $ (dato)
$ ekko "$ i dag"

En annen verktøy av kommandosubstitusjonen er i skallløkker for å få innspill. Her vil vi prøve å skrive ut alt .TXT -filer i vår hjemmemappe ved hjelp av kommandosubstitusjon:

for f in/home/sana/*.tekst
gjøre
ekko "$ f"
Ferdig

Bruke kommandosubstitusjon i et skallskript

Ovennevnte eksempler er noen måter du kan bruke kraften i kommandosubstitusjon i skallskriptet ditt. Her er en eksempler på statusrapport som vi kan skrive ut ved hjelp av følgende skallskript:

#!/bin/sh
ekko *** statusrapport ***
I dag = $ (dato)
ekko "I dag er $ i dag"
Brukere = $ (hvem | wc -l)
Echo "$ brukere brukere er for øyeblikket logget inn"
Oppetid = $ (dato; oppetid)
ekko "Opptidet er $ oppetid"

Kommandosubstitusjon har blitt brukt tre ganger i dette skriptet; Når du skriver ut datoen, logget inn brukere og oppetid. Vi lagret skriptet som følger:

Gjorde den kjørbar og kjørte den deretter gjennom følgende kommando:

$ chmod +x status.sh
$ ./Statys.sh

Her er resultatet av vår status.sh manus:

Du kan selvfølgelig lage mer meningsfulle skript ved å følge eksemplene vi nettopp har nevnt.

$ Parameter substitusjon/utvidelse

En parameter, i bash, er en enhet som brukes til å lagre verdier. En parameter kan refereres til av et tall, et navn eller av et spesielt symbol. Når en parameter refereres til av et nummer, kalles den en Posisjonsparameter. Når en parameter refereres til med et navn, kalles den en variabel. Når en parameter blir referert til av et spesielt symbol, betyr det at de er autosettparametere med spesiell bruk.

Parameterutvidelse/substitusjon er prosessen med å hente verdien fra den refererte enheten/parameteren. Det er som om du utvider en variabel for å hente verdien.

Den enkleste mulige parameterutvidelsessyntaks er følgende:

Slik kan du bruke parameterutvidelsen i bash:

$ parameter

For eksempel er den enkleste bruken å erstatte parameteren etter verdien:

$ name = "John doe"
$ ekko “$ name”

Denne kommandoen vil erstatte verdien av variabelen “Navn” som skal brukes av Echo -kommandoen:

Du tenker kanskje at det samme kan oppnås ved å unngå krøllete tannregulering som følger:

Svaret er at disse krøllete tannreguleringene under parameterutvidelse hjelper til med å avgrense variabelnavnet. La oss forklare hva vi mener med å begrense her. La meg kjøre følgende kommando på systemet mitt:

$ ekko "Navnet på personen er $ name_"

Resultatet skrev ikke ut verdien av variabelnavnet da systemet trodde at jeg refererte til variabelen “Name_”. Dermed ble ikke variabelnavnet mitt "avgrenset". De krøllete seler i følgende eksempel vil avgrense variabelnavnet og returnere resultatene som følger:

$ ekko "Navnet på personen er $ Navn _"

Her er alle måtene variabler erstattes i skall:

$ variabel Denne kommandoen erstatter verdien av variabelen.
$ variabel: -word Hvis en variabel er null, eller hvis den ikke er angitt, erstattes ordet med variabel. Verdien på variabelen endres ikke.
$ variabel: = ord Hvis en variabel er null, eller hvis den ikke er angitt, er verdien av variabelen satt til Word.
$ variabel:?beskjed Hvis en variabel er null, eller hvis den ikke er angitt, skrives meldingen til standard bash -feilen.
$ variabel:+ord Hvis variabel er satt, ord erstattes med variabel. Verdien på selve variabelen endres imidlertid ikke.

Ovennevnte eksempler er noen måter du kan bruke kraften til variabel substitusjon i bash. Du kan innlemme disse måtene å bruke utvidelse i skallskriptene dine for å oppnå oppgaven din optimalt.