
Inställning och hämtning av variabla värden
I bash-kommandoskalet, vilket är standardskalet som används i Linux, kan du ställa in en variabel med det allmänna syntaxen NAME = VALUE . På kommandotolken kan du till exempel skriva:
x = 5
Och en variabel med namnet x kommer att ställas in till det numeriska värdet 5 . Variable namn kan vara i stor bokstav eller små bokstäver, eller en blandning av båda, och de är skiftlägeskänsliga. När variabeln ställs in, får det inte finnas några mellanslag mellan variabelnamnet, lika tecken och värde.
Det finns ingen anledning att förklara variabeln på förhand, eller ange dess datatyp. Bash bestämmer typen av variabeln baserat på dess värde.
Till exempel kan vår variabel också innehålla en sträng:
x = Hej
För en enkel sträng är det inte nödvändigt att bifoga strängen i citattecken, men om strängen innehåller mellanslag måste du omge den med dubbla citat:
x = "Hej världen!"
För att hämta värdet på din variabel, prefix det med en dollar tecken. Till exempel, för att visa värdet av x med hjälp av echo- kommandot, skulle du köra:
echo $ x
Vilka utgångar:
Hej världen!
Vad som händer här är att skalet tar värdet på din variabel och sätter in det i ditt kommando. Du kan referera till variabeln var som helst i ditt kommando, även inuti en dubbelvitad sträng:
echo "$ x $ x Kan någon höra mig? Jag sa, $ x"
Hej världen! Hej världen! Kan någon höra mig? Jag sa hej världen!
Tips: Variabler tolkas bara inuti en sträng om du använder dubbla citat. Om du använder enkla citat, tolkas variabelnamnet bokstavligen utan tolkning:
echo '$ x $ x Kan någon höra mig? Jag sa, $ x '
$ x $ x Kan någon höra mig? Jag sa, $ x
Ställ in värdet på en variabel för att utgå från ett kommando
Om du vill ange värdet på din variabel som utgångspunkt för ett specifikt kommando, använd formuläret:
NAME = $ (kommando)
Om ditt användarnamn till exempel är "steven", körs kommandot whoami som returnerar värdet steven . Du kan ange detta till en variabel:
mittnamn = $ (whoami)
echo $ myname
steven
Du kan göra detta för något kommando. Om kommandot tar argument, behöver du inte bifoga kommandot i citat. Allt inom parentesen kommer att köras som ett kommando:
x = "Hej världen!"
x = $ (echo $ x $ x $ x)
echo $ x
Hej Världen Hej Världen Hej Världen!
Använda variabler i ett enkelt skript
Låt oss se hur vi kan använda en variabel i ett enkelt säkerhetskopieringsskript. Låt oss säga att du vill säkerhetskopiera allt i katalogdokumenten i din hemkatalog. Skriptet arkiverar allt i den katalogen och alla kataloger den innehåller i ett tjärarkiv vars namn innehåller det aktuella datumet. Låt oss behålla säkerhetskopiorna i en katalog som heter säkerhetskopior i din hemkatalog (vi antar att den här katalogen redan existerar. Om inte, kan du köra mkdir ~ / backups för att skapa det).
Öppna en textredigerare och placera den här texten i en ny fil:
#! / bin / bash MYFILENAME = ~ / säkerhetskopior / dokument-backup - $ (datum +% Y-% m-% d) .tar.gztar -czf $ OUTPUTFILE ~ / dokument
Låt oss titta på varje rad i det här skriptet. Den första raden, #! / Bin / bash, förklarar manuset som en körbar fil och anger att den ska köras med / bin / bash, vilket är körbar för bash-kommandoskalet. Obs! Filen kommer inte att köras förrän vi chmod filen senare, men den här raden krävs i något korrekt bash-skript.
Den andra raden anger variabeln MYFILENAME, som innehåller namnet på arkivet som innehåller vår säkerhetskopia. Den första delen av filnamnet är vår backup katalog, ~ / backups .
Obs! Tilde-tecknet ( ~ ) är ett speciellt katalognamn som alltid representerar vår hemkatalog.)
Därefter har vi början på filnamnet, dokument-backup- . Sedan lägger vi in det aktuella datumet med datumkommandot, plus-symbolen och datumformatsträngen % Y-% m-% d . Till exempel, om datumet var 23 februari 2015, skulle det gå tillbaka 2015-02-23 .
Slutligen använder vi förlängningen .tar.gz, vilket är rätt filnamnstillägg för en gzip-komprimerad tjärfil. Så, om vi körde det här skriptet den 23 februari 2015, skulle värdet av MYFILENAME vara ~ / backups / documents-backup-2015-02-23.tar.gz . Om vi körde den den 7 maj 2015 skulle värdet vara ~ / backups / documents-backup-2015-05-07.tar.gz .
Den tredje raden är kommandot som skapar arkivet. Vi använder tar- kommandot med alternativet -czf, vilket kommer att skapa ( c ) ett gzipped arkiv ( z ) med det angivna filnamnet ( f ). Då specificerar vi arkivfilnamnet genom att hänvisa till variabeln som vi skapade i rad 2, OUTPUTFILE . Slutligen berättar vi tjära vad det är som vi vill arkivera: katalogen ~ / dokument .
För att köra skriptet, spara textfilen i din hemkatalog (eller någon annanstans du föredrar) och ge den ett lämpligt namn, till exempel, backup-my-docs . Det är inte nödvändigt att ge det ett filnamnstillägg. Avsluta textredigeraren och gör filen körbar med kommandot chmod + x, till exempel:
chmod + x ~ / backup-my-docs
Nu kan du köra skriptet. Till exempel, om skriptet finns i din arbetsmapp kan du köra det med:
./backup-my-docs
Eller om det finns i din hemkatalog kan du köra det från någon katalog alls med kommandot:
~ / Backup-my-docs