Hvordan lese kommandolinjeargumenter i en bash

Hvordan lese kommandolinjeargumenter i en bash

Når du jobber med Bash Scripting, kan du møte situasjoner der du trenger å overføre argumenter til skriptet ditt via kommandolinjen. I denne artikkelen skal vi utforske de forskjellige måtene å lese kommandolinjeargumenter i bash og gi eksempler på hver metode.

Hva er kommandolinjeargumenter i bash

Kommandolinje -argumenter i bash er parametrene som sendes til et bash -skript eller kommando når det blir utført fra kommandolinjen. De brukes til å tilpasse oppførselen til skriptet eller kommandoen, og kan inkludere alternativer, flagg eller verdier som brukes av skriptet eller kommandoen for å utføre spesifikke oppgaver.

Hvordan lese kommandolinjeargumenter i en bash

For å endre oppførselen til skriptkommandolinjens argumenter brukes hovedsakelig som inkluderer alternativer eller flagg. For eksempel kan du ha et skript som utfører en sikkerhetskopiering, og du vil inkludere et alternativ for å spesifisere destinasjonsmappen for sikkerhetskopien. Her er de tre måtene man kan lese kommandolinjeargumenter i bash -skriptet:

    • Bruker $ skilt
    • Bruker skift
    • Bruke getOps -kommando

Hvordan lese kommandolinje -argumenter ved hjelp av $ kommando i bash

Den mest grunnleggende måten å lese kommandolinjeargumenter i bash er å bruke variablene $ 0, $ 1, $ 2, etc. Disse variablene representerer skriptnavnet ($ 0) og posisjonsparametrene som sendes til skriptet ($ 1, $ 2 osv.). Her er et eksempel på bashode som bruker $ -kommandoen for å lese kommandolinje -argumenter:

#!/bin/bash
ekko "Skriptnavn: $ 0"
ekko "Argument1: $ 1"
ekko "Argument2: $ 2"


Dette skriptet leser kommandolinjeargumenter i bash ved å bruke $ 0, $ 1 og $ 2 variabler. $ 0 -variabelen inneholder navnet på selve skriptet, mens $ 1 og $ 2 inneholder henholdsvis de første og andre kommandolinjeargumentene og for å gi argumenter til skriptet her er syntaks:


Her kan filnavnet inkluderes som et argument hvis de starter fra $ 0 og så videre, dette skriptet leser kommandolinjeargumenter i bash ved å bruke $ 0, $ 1 og $ 2 variabler. $ 0 -variabelen inneholder navnet på selve skriptet, mens $ 1 og $ 2 inneholder henholdsvis de første og andre kommandolinjeargumentene og nedenfor er utgangen for det:

Hvordan lese kommandolinje -argumenter ved hjelp av skiftkommando i bash

"Shift" -kommandoen i bash lar deg skifte posisjonsparametere til venstre, kaste det første argumentet og flytte resten ned med en posisjon. Dette kan være nyttig hvis du trenger å behandle argumenter i en sløyfe, eller hvis du vil håndtere argumenter i en bestemt rekkefølge. Her er et eksempel:

!/bin/bash
ekko "Skriptnavn: $ 0"
mens ["$#" -GT 0]; gjøre
ekko "Argument1": $ 1
skifte
Ferdig


Skriptet starter med å skrive ut navnet på skriptet ved å bruke $ 0 -variabelen, som inneholder navnet på skriptet som det ble kalt fra kommandolinjen. Den neste delen av skriptet er en stundsløyfe som sjekker om det er noen gjenværende kommandolinjeargumenter å behandle. Det gjør dette ved å sjekke verdien av den spesielle $# -variabelen, som inneholder antall kommandolinjeargumenter.

Loopen skriver deretter ut det nåværende argumentet ved å bruke $ 1 -variabelen, som inneholder det første argumentet, og bruker deretter skiftkommandoen for å fjerne det første argumentet fra listen over kommandolinjeargumenter. Dette forskyver alle de gjenværende argumentene ned av en posisjon, slik at $ 1 blir det andre argumentet, $ 2 blir det tredje argumentet, og så videre.

Hvordan lese kommandolinjeargumenter ved hjelp av getopts

Kommandoen "Getopts" i bash lar deg analysere kommandolinjeargumenter og alternativer, dette er nyttig når du trenger å gi valgfrie argumenter eller flagg til skriptet ditt. Her er et eksempelkode som bruker GetOpts -kommandoen og leser to argumenter fra kommandolinjen:

#!/bin/bash
mens getopts ": a: b:" opt; gjøre
sak $ melde deg inn
a) Arg1 = "$ optarg"
;;
b) Arg2 = "$ Optarg"
;;
\?) Echo "Ugyldig alternativ -$ Optarg"> & 2
;;
Esac
Ferdig
ekko "Argument 1: $ Arg1"
ekko "Argument 2: $ Arg2"


GetOpts -kommandoen brukes til å iterere over kommandolinjealternativene og argumentene. Det tar to argumenter: den ene er en streng av alle forventede alternativer, og den andre er variabelen som vil ha verdien av det for øyeblikket behandlede alternativet.

I dette skriptet er de forventede alternativene -A og -B, som blir fulgt av deres tilsvarende argumenter. GetOpts -kommandoen analyserer disse alternativene og argumentene og tildeler dem til $ opt -variabelen.

Saksuttalelsen brukes deretter til å behandle hvert alternativ. Hvis alternativet er -A, tildeles verdien av det tilsvarende argumentet til $ Arg1 -variabelen. Hvis alternativet er -B, tildeles verdien av det tilsvarende argumentet til $ Arg2 -variabelen. Hvis et ugyldig alternativ blir oppdaget, skrives en feilmelding til konsollen.

Etter at alle alternativer og argumenter er blitt behandlet, skriver skriptet ut verdiene til $ Arg1 og $ Arg2 til konsollen ved hjelp av Echo -kommandoen, her er utgangen for koden:

Konklusjon

Kommandolinje -argumenter i bash brukes til å overføre parametere til et skript eller kommando når det utføres fra kommandolinjen. De kan inkludere verdier, alternativer eller flagg som endrer atferden til skriptet, og er avgjørende for å tilpasse oppførselen til bashskript og kommandoer. Det er tre måter å lese kommandolinjeargumenter, og de er: å bruke $ tegner, bruke getops -kommando og bruke skift, og alle disse er nevnt i denne guiden.