Syntaks:
eval [argument ...]Her analyseres argumenter og kombineres til en streng, der udføres af skallen. 'eval' returnerer en exit-statuskode efter udførelse af kommandoen. 'eval' returnerer 0 som exit-statuskode, hvis der ikke gives noget argument, eller der kun gives null-argument.
Eksempel 1: Udfør kommandoen 'wc' ved hjælp af 'eval'
Antag en tekstfil med navnet “afdeling.txt”Indeholder følgende tekst. Det samlede antal linjer i filen kan tælles med kommandoen 'wc'.
afdeling.txt
CSEEEE
ETE
ENGELSK
BBA
APOTEK
Den følgende kommando gemmer 'wc' -kommandoen for at tælle det samlede antal linjer i filen, afdeling.txt til variablen, $ mycommand.
$ mycommand = "wc -l afdeling.txt "Den følgende kommando 'eval' kører kommandoen 'wc' og udskriver det samlede antal linjer.
$ eval $ mycommandProduktion:
Outputtet viser det afdeling.txt filen har 6 linjer.
Examplel-2: Udfør kommandoen 'expr' ved hjælp af 'eval'
Opret en bash-fil med navnet evaltest.sh og tilføj følgende script. Dette script tildeler to heltalsværdier til variablen $ x og $ y. Kommandoer 'expr' og 'echo' tildeles i to variabler, $ c1 og $ c2, der udføres senere ved hjælp af kommandoen 'eval'.
evaltest.sh
#!/ bin / bash#Initialiser variablen x og y
x = 5
y = 15
#Den første kommandovariabel bruges til at tildele 'expr' kommando for at tilføje værdierne på $ x og $ y
c1 = "'ekspr $ x + $ y'"
#Den anden kommandovariabel bruges til at tildele kommandoen 'ekko'
c2 = "ekko"
# 'eval' beregner og udskriver summen af $ x og $ y ved at udføre kommandoerne på $ c1
og $ c2 variabler
eval $ c2 $ c1
Kør scriptet.
$ bash evaltest.shSummen af 5 og 15 er 20, der vises i output.
Eksempel 3: Udskriv værdien af en variabel, der er tildelt i en anden variabel
Opret et bash-script med navnet evaltest2.sh med følgende script. Her bruges en variabel til at tildele navnet på en anden variabel, der indeholder strengdata. kommandoen 'eval' udskriver værdien af variablen, der indeholder en anden variabels navn som indhold.
evaltest2.sh
#!/ bin / bash# Tildel en strengværdi til variablen $ str1
str1 = "Shell-script"
# Tildel variabelnavnet “str1” til variablen $ str2
str2 = str1
# Gem kommandoen i variablen $ kommando
kommando = "ekko"
# 'eval' kommando udfører kommandoen 'echo' og udskriver værdien af variablen
der indeholder i en anden variabel
eval $ kommando \ $ $ str2
Kør scriptet.
$ bash evaltest2.shVærdien af variablen $ str1 udskrives.
Der er en anden måde at få adgang til værdien af en variabel, hvilket navn er værdien af en anden variabel. Ved brug af '!'symbol værdien af denne type variabel kan tilgås. Følgende kommando kan bruges som et alternativ til det forrige script, og output vil være den samme.
$ str1 = "Shell-script"; str2 = str1; command = "ekko"; eval $ kommando $ !str2Eksempel 4: Opret en række variabler med værdier og beregne summen af værdierne ved hjælp af kommandoen 'eval'
Opret et bash-script med navnet evaltest3.sh og tilføj følgende script. Dette script opretter en række variabler og gemmer værdierne i variablerne ved hjælp af kommandoen 'eval'. Værdierne for variablerne tilføjes og gemmes i en variabel med navnet $ sum. Dernæst tildeles 'ekko-kommando med strengværdier til en variabel, der bruges i kommandoen' eval 'til at udskrive værdien af variablen $ sum.
evaltest3.sh
#!/ bin / bash# Initialiser den variable $ sum med værdien 0
sum = 0
# Erklær et for-løkke, der gentages 4 gange
for n i 1… 4
gør
# Opret fire variabler ved hjælp af eval-kommandoen
eval x $ n = $ n
# Tilføj værdierne for variablen med $ sum
sum = $ (($ sum + $ x $ n))
Færdig
# Tildel 'ekko-kommando med streng i en variabel
command = "echo 'Resultatet af summen ='"
# 'eval' kommando udskriver sumværdien ved hjælp af variabler
eval $ kommando $ sum
Kør scriptet.
$ bash evaltest3.shSummen af de fire variabler er, 1 + 2 + 3 + 4 = 10, der udskrives.
Eksempel 5: Brug kommandoen 'eval' til at fjerne listen over filer
Opret en bash-fil med navnet evaltest4.sh med følgende script. Dette script læser tre kommandolinjeargumenter som filnavne, der fjernes og gemmer argumentværdierne i en matrixvariabel, $ fn. 'rm' kommando er gemt i en variabel, $ kommando. For loop erklæres her for at hente hvert filnavn og fjerne filen ved hjælp af 'eval' kommando, hvis filen findes.
evaltest4.sh
#!/ bin / bash#Deklarer en matrix
erklære -A fn
# Læs tre argumenter på kommandolinjen, og gem dem i tre indeks i arrayet
fn [0] = $ 1
fn [1] = $ 2
fn [2] = $ 3
# Gem fjern kommandoen i en variabel
kommando = "rm"
# for loop gentages tre gange for at læse tre array-element
for indeks i 0 1 2
gør
# Kontroller, at filen findes eller ikke findes
hvis [[-f $ fn [$ index]]]; derefter
# hvis filen findes, skal du fjerne filen
eval $ kommando $ fn [$ index]
# Informer brugeren om, at filen er fjernet
ekko "$ fn [$ index] er slettet."
Andet
# Informer brugeren om, at filen ikke findes
ekko "$ fn [$ index] findes ikke."
fi
Færdig
Kør scriptet.
$ bash evaltest4.sh mærker.docx-vare.txt-produkt.docxHer gives tre filnavne på tidspunktet for udførelse af scriptet. Outputtet viser at mærker.docx og produkt.docx findes på den aktuelle placering, og filerne fjernes og element.txt findes ikke den aktuelle placering.
Konklusion
Enhver bash-kommando kan udføres af 'eval' kommando ved at erklære som en streng. 'eval' kommando bruges i denne tutorial til at udføre forskellige indbyggede kommandoer af bash og oprette en række variabler. Brugen af kommandoen 'eval' ryddes for brugerne, og de vil være i stand til at bruge denne kommando til forskellige formål efter at have læst denne vejledning.