logo

Set – $VARIABLE i bash

I en värld av bash-skript kan du stöta på frasuppsättningen - $VARIABLE. Men vad betyder det?

Som mest grundläggande, set – $VARIABLE används för att dela upp värdet på en bashvariabel i separata ord, med hjälp av Internal Field Separator (IFS) som avgränsare. Till exempel, om VARIABLE har värdet a b c, då kör set – $VARIABLE skulle ställa in positionsparametrarna till a, b och c.



hrithik roshan

Detta kanske inte verkar särskilt användbart vid första anblicken, men det kan vara ett kraftfullt verktyg när det används i rätt sammanhang. Ett vanligt användningsfall är att bearbeta kommandoradsargument som skickas till ett bash-skript. När du kör ett bash-skript representerar positionsparametrarna (d.v.s. , , etc.) argumenten som skickas till skriptet. Genom att använda set – $VARIABLE kan du enkelt dela upp ett enda argument i flera ord, vilket gör att du lättare kan bearbeta dem.

Här är ett exempel på hur detta kan användas:

#!/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>

Om du sparar det här skriptet som exempel.sh och kör det så här:

./example.sh 'a b c'>

Produktion:



a b c>

Slinga över elementen i en lista lagrade i en variabel

Ett annat vanligt användningsfall för set – $VARIABLE är att loopa över elementen i en lista som lagras i en variabel. Till exempel:

# 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 är värt att notera att uppsättningen – $VARIABLE fungerar bara om värdet på VARIABLE är en enda sträng. Om VARIABLE är en array måste du använda ett annat tillvägagångssätt. Ett alternativ är att använda printf '%s ' ${VARIABLE[@]}-syntaxen, som utökar arrayen till en serie separata ord, vart och ett separerat av ett nytt radtecken.



Här är ett exempel på hur detta kan användas:

#!/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:

teknikens fördelar och nackdelar
a b c>

Slutsats

Sammanfattningsvis, set – $VARIABLE är en användbar bash-funktion som låter dig dela upp värdet på en variabel i separata ord, med hjälp av IFS som avgränsare. Den kan användas för att bearbeta kommandoradsargument eller för att loopa över elementen i en lista som lagras i en variabel. Även om det bara fungerar med enstaka strängar, finns det alternativa metoder som kan användas med arrayer. Förstå hur set – $VARIABLE fungerar och när den ska användas kan vara ett värdefullt tillägg till din bash scripting toolkit.