Bash eval -kommando

Bash eval -kommando
'eval' -kommando brukes i bash for å utføre argumenter som en skallkommando. Argumenter er sammen med en streng og tatt som innspill for Shell -kommandoen for å utføre kommandoen. 'eval' utfører kommandoen i det nåværende skallet. Denne kommandoen er nyttig når den krever å utføre enhver kommando som inneholder en spesiell operatør eller reservert nøkkelord. Denne kommandoen kan brukes i et hvilket som helst skript også der variabelnavnet er ukjent til utførelsen av skriptet. Denne opplæringen vil hjelpe Linux -brukere til å lære bruken av denne kommandoen.

Syntaks:

eval [argument…]

Her blir argumenter analysert og kombinert til en streng som vil utføres av skallet. 'eval' returnerer en exit -statuskode etter å ha utført kommandoen. 'eval' returnerer 0 som avkjøringsstatuskode hvis ikke noe argument er gitt eller bare nullargument er gitt.

Eksempel-1: Utfør 'WC' -kommando ved hjelp av 'eval'

Anta at en tekstfil som heter “avdeling.tekst”Inneholder følgende tekst. Det totale antallet linjer i filen kan telles med 'WC' -kommando.

avdeling.tekst

CSE
Eee
Ete
ENGELSK
BBA
APOTEK

Følgende kommando vil lagre 'wc' -kommando for å telle de totale talllinjene i filen, avdeling.tekst til variabelen, $ MyCommand.

$ MyCommand = "WC -L -avdeling.tekst"

Følgende 'eval' -kommando vil kjøre 'WC' -kommando og skrive ut det totale antallet linjer.

$ eval $ mykommand

Produksjon:

Utgangen viser det avdeling.tekst Filen har 6 linjer.

Eksempler på 2: Utfør 'expr' -kommando ved hjelp av 'eval'

Lag en bash -fil som heter Evaluest.sh og legg til følgende skript. Dette skriptet vil tilordne to heltallverdier i variabelen $ x og $ y. Kommandoene 'Expr' og 'Echo' er tildelt to variabler, $ C1 og $ C2 som blir utført senere ved å bruke 'Eval' -kommandoen.

Evaluest.sh

#!/bin/bash
#Initialiser variabelen x og y
x = 5
y = 15
#Den første kommandovariabelen brukes til å tilordne 'expr' -kommando for å legge til verdiene på $ x og $ y
C1 = "'Expr $ x + $ y'"
#Den andre kommandovariabelen brukes til å tildele 'Echo' -kommando
C2 = "Echo"
#'eval' vil beregne og skrive ut summen av $ x og $ y ved å utføre kommandoene på $ C1
og $ C2 -variabler
Eval $ C2 $ C1

Kjør manuset.

$ Bash Evalteest.sh

Summen av 5 og 15 er 20 som er vist i utgangen.

Eksempel-3: Skriv ut verdien til en variabel som er tilordnet i en annen variabel

Lag et bash -skript som heter Evalteest2.SH med følgende skript. Her brukes en variabel til å tilordne navnet på en annen variabel som inneholder en strengdata. 'eval' -kommando vil skrive ut verdien på variabelen som inneholder en annen variabeles navn som innhold.

Evalteest2.sh

#!/bin/bash
# Tildel en strengverdi til variabelen, $ str1
STR1 = "Shell Script"
# Tilordne variabelnavnet, “Str1” til variabelen $ str2
str2 = str1
#Store kommandoen til variabelen, $ -kommandoen
Command = "Echo"
# 'eval' -kommandoen vil utføre 'Echo' -kommandoen og skrive ut verdien av variabelen
som inneholder en annen variabel
eval $ kommando \ $ $ str2

Kjør manuset.

$ Bash Evalteest2.sh

Verdien på variabelen, $ str1 skrives ut.

Det er en annen måte å få tilgang til verdien av en variabel som er verdien av en annen variabel. Ved hjelp av '!'Symbol Verdien på denne typen variabler kan nås. Følgende kommando kan brukes som et alternativ til det forrige skriptet, og utgangen vil være den samme.

$ str1 = "Shell Script"; str2 = str1; kommando = "ekko"; eval $ kommando $ !str2

Eksempel-4: Lag en serie variabler med verdier og beregne summen av verdiene ved å bruke 'eval' -kommandoen

Lag et bash -skript som heter Evalteest3.SH og legg til følgende skript. Dette skriptet vil lage en serie variabler og lagre verdiene i variablene ved hjelp av 'eval' -kommandoen. Verdiene til variablene vil bli lagt til og lagret i en variabel med navnet $ sum. Deretter tildeles 'Echo' -kommando med strengverdier i en variabel som brukes i 'eval' -kommandoen for å skrive ut verdien av $ sum -variabelen.

Evalteest3.sh

#!/bin/bash
# Initialiser variabelen $ sum med verdien 0
Sum = 0
# Erklære en for loop som vil iterere i 4 ganger
for n i 1… 4
gjøre
# Lag fire variabler ved hjelp av eval -kommando
eval x $ n = $ n
# Legg til verdiene til variabelen med $ sum
sum = $ (($ sum+$ x $ n))
Ferdig
# Tildel 'Echo' -kommandoen med streng til en variabel
kommando = "ekko 'resultatet av summen ='"
# 'eval' Kommando Skriv ut sumverdien ved hjelp av variabler
eval $ kommando $ sum

Kjør manuset.

$ Bash Evalteest3.sh

Summen av de fire variablene er, 1+2+3+4 = 10 som er trykt.

Eksempel-5: Bruke 'eval' -kommando for å fjerne listen over filer

Lag en bash -fil som heter Evalteest4.SH med følgende skript. Dette skriptet vil lese tre kommandolinjeargumenter som filnavn som vil bli fjernet og lagre argumentverdiene til en matrisevariabel, $ FN. 'RM' -kommando lagres i en variabel, $ -kommando. For Loop erklæres her for å hente hvert filnavn og fjerne filen ved hjelp av 'Eval' -kommandoen hvis filen eksisterer.

Evalteest4.sh

#!/bin/bash
#Declare en matrise
erklære -a fn
# Les tre kommandolinjeargumenter og lagre i tre indeks av matrisen
fn [0] = $ 1
fn [1] = $ 2
fn [2] = $ 3
# Lagre fjernkommandoen i en variabel
kommando = "RM"
# for loop vil iterere i tre ganger for å lese tre array -element
for indeks i 0 1 2
gjøre
# Sjekk filen eksisterer eller ikke eksisterer
if [[-f $ fn [$ index]]]; deretter
# Hvis filen eksisterer, må du fjerne filen
eval $ kommando $ fn [$ index]
# Informer brukeren om at filen er fjernet
ekko "$ fn [$ index] blir slettet.""
Ellers
#Inform brukeren om at filen ikke eksisterer
ekko "$ fn [$ index] ikke eksisterer.""
fi
Ferdig

Kjør manuset.

$ Bash Evalteest4.SH -merker.DOCX -vare.txt produkt.Docx

Her leveres tre filnavn på tidspunktet for utførelsen av skriptet. Utgangen viser at merker.Docx og produkt.Docx eksisterer på det nåværende stedet og filene fjernes og, elementet.TXT eksisterer ikke på det nåværende stedet.

Konklusjon

Enhver bash -kommando kan utføres ved 'eval' -kommando ved å erklære som en streng. 'eval' -kommando brukes i denne opplæringen for å utføre forskjellige innebygde kommandoer av bash og lage en serie variabler. Bruken av 'eval' -kommandoen vil bli fjernet for brukerne, og de vil kunne bruke denne kommandoen til forskjellige formål etter å ha lest denne opplæringen.