Linux-opdrachten

Bash evaluatie commando

Bash evaluatie commando
'eval'-opdracht wordt in bash gebruikt om argumenten uit te voeren zoals een shell-opdracht. Argumenten worden samengevoegd in een string en worden gebruikt als invoer voor het shell-commando om het commando uit te voeren. 'eval' voert het commando uit in de huidige shell. Deze opdracht is handig wanneer een opdracht moet worden uitgevoerd die een speciale operator of gereserveerde trefwoorden bevat. Deze opdracht kan in elk script worden gebruikt, ook als de naam van de variabele onbekend is totdat het script wordt uitgevoerd. Deze tutorial helpt Linux-gebruikers om het gebruik van deze opdracht te leren.

Syntaxis:

evalueren [argument... ]

Hier worden argumenten geparseerd en gecombineerd tot een string die door de shell wordt uitgevoerd. 'eval' retourneert een exit-statuscode na het uitvoeren van de opdracht. 'eval' retourneert 0 als exit-statuscode als er geen argument is opgegeven of alleen een null-argument is opgegeven.

Voorbeeld-1: Voer de opdracht 'wc' uit met 'eval'

Stel dat een tekstbestand met de naam “afdeling.tekst” bevat de volgende tekst. Het totale aantal regels van het bestand kan worden geteld met het 'wc'-commando.

afdeling.tekst

CSE
EEE
ETE
ENGELS
BBA
APOTHEEK

De volgende opdracht slaat de opdracht 'wc' op om het totale aantal regels van het bestand te tellen, afdeling.tekst naar de variabele, $mijnopdracht.

$ mijncommando = "wc -l afdeling.tekst"

De volgende 'eval'-opdracht voert de 'wc'-opdracht uit en drukt het totale aantal regels af.

$ evalueer $mijncommando

Uitgang:

De uitvoer laat zien dat: afdeling.tekst bestand heeft 6 regels.

Voorbeeld-2: Voer de opdracht 'expr' uit met 'eval'

Maak een bash-bestand met de naam evaluatietest.sh en voeg het volgende script toe:. Dit script wijst twee gehele waarden toe aan de variabele $x en $y. De opdrachten 'expr' en 'echo' worden toegewezen aan twee variabelen, $c1 en $c2 die later worden uitgevoerd met de opdracht 'eval'.

evaluatietest.sh

#!/bin/bash
#Initialiseer de variabelen x en y
x=5
y=15
#De eerste opdrachtvariabele wordt gebruikt om de opdracht 'expr' toe te wijzen om de waarden van $x en $y . toe te voegen
c1="'uitdr $x + $y'"
#De tweede commandovariabele wordt gebruikt om het 'echo'-commando toe te wijzen
c2="echo"
#'eval' berekent en print de som van $x en $y door het uitvoeren van de commando's van $c1
en $c2 variabelen
evalueer $c2 $c1

Voer het script uit.

$ bash evaluatie.sh

De som van 5 en 15 is 20 die wordt weergegeven in de uitvoer.

Voorbeeld-3: Druk de waarde af van een variabele die is toegewezen aan een andere variabele

Maak een bash-script met de naam evaltest2.sh met het volgende script. Hier wordt één variabele gebruikt om de naam van een andere variabele toe te wijzen die een string data bevat. 'eval' commando zal de waarde van de variabele die de naam van een andere variabele bevat als inhoud afdrukken.

evaltest2.sh

#!/bin/bash
# Wijs een stringwaarde toe aan de variabele, $str1
str1="Shell-script"
# Wijs de variabelenaam "str1" toe aan de variabele $str2
str2=str1
#Sla de opdracht op in de variabele $opdracht
command = "echo"
# 'eval'-opdracht voert de 'echo'-opdracht uit en drukt de waarde van de variabele af
die bevat in een andere variabele
evalueer $commando \$$str2

Voer het script uit.

$ bash evaluatie2.sh

De waarde van de variabele, $str1 wordt afgedrukt.

Er is een andere manier om toegang te krijgen tot de waarde van een variabele, waarvan de naam de waarde is van een andere variabele. Gebruik makend van '!' symbool de waarde van dit type variabele is toegankelijk. De volgende opdracht kan worden gebruikt als alternatief voor het vorige script en de uitvoer zal hetzelfde zijn.

$ str1="Shell-script"; str2=str1; commando = "echo"; evalueer $opdracht $!str2

Voorbeeld-4: Maak een reeks variabelen met waarden en bereken de som van de waarden met het 'eval'-commando

Maak een bash-script met de naam evaltest3.sh en voeg het volgende script toe:. Dit script maakt een reeks variabelen en slaat de waarden op in de variabelen met de opdracht 'eval'. De waarden van de variabelen worden toegevoegd en opgeslagen in een variabele met de naam $sum. Vervolgens wordt het 'echo'-commando met tekenreekswaarden toegewezen aan een variabele die wordt gebruikt in het 'eval'-commando om de waarde van de $sum-variabele af te drukken.

evaltest3.sh

#!/bin/bash
# Initialiseer de variabele $sum met de waarde 0
som=0
# Declareer een for-lus die 4 keer zal herhalen
voor n in 1... 4
Doen
# Maak vier variabelen met de opdracht eval
eval x$n=$n
# Voeg de waarden van de variabele toe met $sum
som=$(($som+$x$n))
gedaan
# Wijs 'echo'-commando met string toe aan een variabele
command="echo 'Het resultaat van de som ='"
# 'eval'-commando print de somwaarde met behulp van variabelen
evalueer $commando $sum

Voer het script uit.

$ bash evaltest3.sh

De som van de vier variabelen is, 1+2+3+4=10 die wordt afgedrukt.

Voorbeeld-5: Het 'eval'-commando gebruiken om de lijst met bestanden te verwijderen

Maak een bash-bestand met de naam evaltest4.sh met het volgende script. Dit script leest drie opdrachtregelargumenten als bestandsnamen die worden verwijderd en slaat de argumentwaarden op in een arrayvariabele, $fn. 'rm' commando wordt opgeslagen in een variabele, $command. For-lus wordt hier gedeclareerd om elke bestandsnaam op te halen en het bestand te verwijderen met de opdracht 'eval' als het bestand bestaat.

evaltest4.sh

#!/bin/bash
#Declareer een array
declareren -A fn
# Lees drie opdrachtregelargumenten en sla op in drie indexen van de array
fn[0]=$1
fn[1]=$2
fn[2]=$3
# Bewaar de verwijderopdracht in een variabele
commando = "rm"
# for loop zal drie keer herhalen om drie array-elementen te lezen
voor index in 0 1 2
Doen
# Controleer of het bestand bestaat of niet bestaat
if [[ -f $fn[$index] ]]; dan
# als het bestand bestaat, verwijder het bestand
evalueer $opdracht $fn[$index]
# Informeer de gebruiker dat het bestand is verwijderd
echo "$fn[$index] is verwijderd."
Anders
#Informeer de gebruiker dat het bestand niet bestaat
echo "$fn[$index] bestaat niet."
fi
gedaan

Voer het script uit.

$ bash evaltest4.sh-markeringen.docx-item.txt-product.docx

Hier worden drie bestandsnamen gegeven op het moment dat het script wordt uitgevoerd. De uitvoer laat zien dat markeringen.docx en product.docx bestaat op de huidige locatie en de bestanden zijn verwijderd en, item.txt bestaat niet op de huidige locatie.

Conclusie

Elk bash-commando kan worden uitgevoerd door het 'eval'-commando door te declareren als een string. 'eval'-commando wordt in deze tutorial gebruikt voor het uitvoeren van verschillende ingebouwde commando's van bash en het maken van een reeks variabelen. Het gebruik van het 'eval'-commando wordt gewist voor de gebruikers en ze zullen dit commando voor verschillende doeleinden kunnen gebruiken na het lezen van deze tutorial.

Top Oculus App Lab-games
Als je eigenaar bent van een Oculus-headset, moet je op de hoogte zijn van sideloading. Sideloading is het proces van het installeren van niet-winkeli...
Top 10 spellen om te spelen op Ubuntu
Het Windows-platform is een van de dominante platforms voor gaming geweest vanwege het enorme percentage games dat tegenwoordig wordt ontwikkeld om Wi...
5 beste arcade-spellen voor Linux
Tegenwoordig zijn computers serieuze machines die worden gebruikt om te gamen. Als je de nieuwe hoge score niet kunt halen, weet je wat ik bedoel. In ...