Hvordan opretholdes en variabel i Linux?

Linux-operativsystemets kommandolinjeskal er et kraftfuldt værktøj, som i sin helhed er en programmeringssprogtolk. Som med ethvert andet programmeringssprog giver kommandopåsen dig mulighed for at bruge variabler til at gemme, hente og manipulere data.

Indstilling og hentning af variable værdier

I bash-kommandoen skal, som er standardskallen, der bruges i Linux, kan du indstille en variabel ved hjælp af den generelle syntaks NAME = VALUE . For eksempel ved kommandoprompten kan du skrive:

 x = 5 

Og en variabel med navnet x vil blive indstillet til den numeriske værdi 5 . Variable navne kan være i store eller små bogstaver eller en blanding af begge, og de er store og små bogstaver. Når variablen indstilles, må der ikke være mellemrum mellem variablenavnet, ligestillingsbetegnelsen og værdien.

Der er ikke behov for at erklære variablen på forhånd, eller angiv dens datatype. Bash bestemmer typen af ​​variablen baseret på dens værdi.

For eksempel kan vores variabel også indeholde en streng:

 x = Hello 

For en enkel streng er det ikke nødvendigt at vedhæfte strengen i citatmærker, men hvis strengen indeholder mellemrum, skal du omgive den med dobbelt citater:

 x = "Hej verden!" 

For at hente værdien af ​​din variabel, prefix den med et dollar tegn. For at se værdien af x ved hjælp af ekkokommandoen, ville du køre:

 ekko $ x 

Hvilke udgange:

 Hej Verden! 

Hvad der sker her er, skalen tager værdien af ​​din variabel og indsætter den i din kommando. Du kan henvise til variablen hvor som helst i din kommando, selv inde i en dobbelt citeret streng:

 ekko "$ x $ x Kan nogen høre mig? Jeg sagde, $ x" 
 Hej Verden! Hej Verden! Kan nogen høre mig? Jeg sagde hej verden! 

Tip: Variabler tolkes kun inde i en streng, hvis du bruger dobbelt citater. Hvis du bruger single-citater, vil variablenavnet fortolkes bogstaveligt, uden fortolkning:

 ekko '$ x $ x Kan nogen høre mig? Jeg sagde, $ x ' 
 $ x $ x Kan nogen høre mig? Jeg sagde, $ x 

Indstilling af en variables værdi for at være output af en kommando

For at indstille værdien af ​​din variabel til at være output fra en bestemt kommando, brug formularen:

 NAME = $ (KOMMANDO) 

For eksempel, hvis dit brugernavn er "steven", kører kommandoen whoami returnerer værdien steven . Du kan indstille dette til en variabel:

 myname = $ (whoami) 
 echo $ myname 
 steven 

Det kan du gøre for enhver kommando. Hvis kommandoen tager argumenter, behøver du ikke at vedhæfte kommandoen i citater. Alt inden for parenteserne vil blive kørt som en kommando:

 x = "Hej verden!" 
 x = $ (echo $ x $ x $ x) 
 ekko $ x 
 Hej, verden! Hej, verden! Hej, verden! 

Brug af variabler i et simpelt script

Lad os se, hvordan vi kan bruge en variabel i et simpelt backup script. Lad os sige, at du vil sikkerhedskopiere alt i katalogdokumenterne i din hjemmekatalog. Skriptet arkiverer alt i den mappe og eventuelle mapper, den indeholder, til et tjærearkiv, hvis navn indeholder den aktuelle dato. Lad os holde sikkerhedskopierne i en mappe kaldet sikkerhedskopier i din hjemmekatalog (vi antager, at denne mappe allerede eksisterer. Hvis ikke, kan du køre mkdir ~ / backups for at oprette det).

Åbn en teksteditor og læg denne tekst i en ny fil:

 #! / bin / bash MYFILENAME = ~ / backups / documents-backup - $ (dato +% Y-% m-% d) .tar.gz 

tar -czf $ OUTPUTFILE ~ / dokumenter

Lad os se på hver linje i dette script. Den første linje, #! / Bin / bash, erklærer scriptet som en eksekverbar fil og angiver, at den skal køres med / bin / bash, som er den eksekverbare af bash kommando shell. Bemærk: Filen vil ikke blive eksekverbar, før vi chmod filen senere, men denne linje er nødvendig i ethvert korrekt bash script.

Den anden linje angiver variablen MYFILENAME, som vil indeholde navnet på arkivet, der indeholder vores backup. Den første del af filnavnet er vores backup-katalog, ~ / backups .

Bemærk: Tegnet tegnet ( ~ ) er et specielt katalognavn, der altid repræsenterer vores hjemmekatalog.)

Dernæst har vi starten på filnavnet, dokumenter-backup- . Derefter indsætter vi den aktuelle dato ved hjælp af datakommandoen, plus-symbolet og datoformatstrengen % Y-% m-% d . For eksempel, hvis datoen var 23. februar 2015, ville det returnere 2015-02-23 .

Endelig bruger vi udvidelsen .tar.gz, som er den rigtige filnavnudvidelse for en gzip-komprimeret tjærefil. Så hvis vi kørte dette script den 23. februar 2015, ville værdien af MYFILENAME være ~ / backups / documents-backup-2015-02-23.tar.gz . Hvis vi kørte den den 7. maj 2015, ville værdien være ~ / backups / documents-backup-2015-05-07.tar.gz .

Den tredje linje er den kommando, der opretter arkivet. Vi bruger tar kommandoen med optionen -czf, som vil skabe ( c ) et gzipped arkiv ( z ) ved hjælp af det angivne filnavn ( f ). Derefter specificerer vi arkivfilnavnet ved at henvise til variablen, vi oprettede i linje 2, OUTPUTFILE . Endelig fortæller vi tjære hvad det er, vi vil arkivere: mappen ~ / dokumenter .

For at køre scriptet skal du gemme tekstfilen i din hjemmekatalog (eller et andet sted du foretrækker) og give det et passende navn, f.eks. Backup-my-docs . Det er ikke nødvendigt at give det et filnavn udvidelse. Afslut teksteditoren, og gør filen eksekverbar ved hjælp af kommandoen chmod + x, for eksempel:

 chmod + x ~ / backup-my-docs 

Nu kan du køre scriptet. For eksempel, hvis scriptet er i din arbejdsmappe, kan du køre det med:

 ./backup-my-docs 

Eller hvis det er i din hjemmekatalog, kan du køre det fra en hvilken som helst mappe med kommandoen:

 ~ / Backup-mine-docs