I en verden af bash-scripting kan du støde på sætningssættet - $VARIABLE. Men hvad betyder det?
På det mest basale, sæt – bruges $VARIABLE til at opdele værdien af en bash-variabel i separate ord, ved at bruge den interne feltseparator (IFS) som afgrænsningstegn. For eksempel, hvis VARIABLE har værdien a b c, så vil køresæt – $VARIABLE sætte positionsparametrene til a, b og c.
slet sidste commit git
Dette virker måske ikke særlig brugbart ved første øjekast, men det kan være et stærkt værktøj, når det bruges i den rigtige sammenhæng. En almindelig anvendelse er at behandle kommandolinjeargumenter, der sendes til et bash-script. Når du kører et bash-script, repræsenterer positionsparametrene (dvs. , osv.) de argumenter, der sendes til scriptet. Ved at bruge set – $VARIABLE kan du nemt opdele et enkelt argument i flere ord, så du lettere kan behandle dem.
Her er et eksempel på, hvordan dette kan bruges:
#!/bin/bash # Set the value of VARIABLE to the first command-line argument VARIABLE='' # Split the value of VARIABLE into separate words set - $VARIABLE # Loop over the words for word in '$@'; do echo '$word' done>
Hvis du gemmer dette script som eksempel.sh og kør det sådan her:
./example.sh 'a b c'>
Produktion:
a b c>
Loop over elementerne i en liste, der er gemt i en variabel
Et andet almindeligt brugstilfælde for sæt - $VARIABLE er at sløjfe over elementerne i en liste, der er gemt i en variabel. For eksempel:
omvendt streng java
# Set the value of VARIABLE to 'a b c' VARIABLE='a b c' # Split the value of VARIABLE into separate words set - $VARIABLE # Loop over the words for word in '$@'; do echo '$word' done>
Produktion:
a b c>
Det er værd at bemærke det sæt - $VARIABLE virker kun, hvis værdien af VARIABLE er en enkelt streng. Hvis VARIABLE er en matrix, skal du bruge en anden tilgang. En mulighed er at bruge printf '%s ' ${VARIABLE[@]}-syntaksen, som udvider arrayet til en række separate ord, hver adskilt af et nyt linjetegn.
Her er et eksempel på, hvordan dette kan bruges:
#!/bin/bash # Set the value of VARIABLE to an array containing 'a', 'b', and 'c' VARIABLE=('a' 'b' 'c') # Expand the array into a series of separate words set - $(printf '%s
' '${VARIABLE[@]}') # Loop over the words for word in '$@'; do echo '$word' done>
Produktion:
a b c>
Konklusion
Som konklusion, sæt - $VARIABLE er en nyttig bash-funktion, der giver dig mulighed for at opdele værdien af en variabel i separate ord ved at bruge IFS som afgrænsningstegn. Den kan bruges til at behandle kommandolinjeargumenter eller til at gå over elementerne i en liste, der er gemt i en variabel. Selvom det kun virker med enkelte strenge, er der alternative tilgange, der kan bruges med arrays. Forstå hvordan indstillet – $VARIABLE virker, og hvornår det skal bruges, kan være en værdifuld tilføjelse til dit bash scripting toolkit.