Comando Bash Eval

Comando Bash Eval
Il comando 'Eval' viene utilizzato in bash per eseguire argomenti come un comando shell. Gli argomenti sono uniti in una stringa e presi come input per il comando shell per eseguire il comando. 'Eval' esegue il comando nella shell corrente. Questo comando è utile quando richiede di eseguire qualsiasi comando che contenga un operatore speciale o parole chiave riservate. Questo comando può essere utilizzato in qualsiasi script anche in cui il nome della variabile è sconosciuto fino all'esecuzione dello script. Questo tutorial aiuterà gli utenti Linux ad apprendere l'uso di questo comando.

Sintassi:

Eval [argomento ...]

Qui, gli argomenti vengono analizzati e combinati in una stringa che eseguirà dalla shell. 'Eval' restituisce un codice di stato di uscita dopo aver eseguito il comando. 'Eval' restituisce 0 come codice di stato di uscita se non viene fornito alcun argomento o viene fornito solo un argomento null.

Esempio-1: eseguire il comando 'WC' usando 'Eval'

Supponiamo che un file di testo chiamato "Dipartimento.TXT"Contiene il seguente testo. Il numero totale di righe del file può essere conteggiato con il comando 'WC'.

Dipartimento.TXT

CSE
Eee
Ete
INGLESE
BBA
FARMACIA

Il comando seguente memorizzerà il comando 'WC' per contare le righe numeriche totali del file, Dipartimento.TXT alla variabile, $ myCommand.

$ myCommand = "WC -l Dipartimento.TXT"

Il seguente comando "Eval" eseguirà il comando "WC" e stampano il numero totale di righe.

$ eval $ myCommand

Produzione:

L'output lo mostra Dipartimento.TXT Il file ha 6 righe.

Emplel-2: esegui il comando "Expr" usando 'Eval'

Crea un file bash denominato Valtest.sh e aggiungi il seguente script. Questo script assegnerà due valori interi nella variabile $ x e $ y. I comandi "expr" ed eco "sono assegnati in due variabili, $ C1 e $ C2 che vengono eseguite in seguito utilizzando il comando" Eval ".

Valtest.sh

#!/Bin/Bash
#Initializza la variabile xey
x = 5
y = 15
#La prima variabile di comando viene utilizzata per assegnare il comando "expr" per aggiungere i valori di $ x e $ y
c1 = "'expr $ x + $ y'"
#La seconda variabile di comando viene utilizzata per assegnare il comando 'echo'
c2 = "eco"
#'eval' calcolerà e stampa la somma di $ x e $ y eseguendo i comandi di $ c1
e variabili $ c2
Eval $ C2 $ C1

Esegui lo script.

$ Bash Valttest.sh

La somma di 5 e 15 è 20 che è mostrata nell'output.

Esempio-3: stampare il valore di una variabile assegnata in un'altra variabile

Crea uno script bash denominato valutest2.Sh con il seguente script. Qui, una variabile viene utilizzata per assegnare il nome di un'altra variabile che contiene un dati di stringa. Il comando "Eval" stamperà il valore della variabile che contiene il nome di un'altra variabile come contenuto.

Valtest2.sh

#!/Bin/Bash
# Assegna un valore stringa nella variabile, $ str1
str1 = "script shell"
# Assegna il nome della variabile, "STR1" alla variabile $ STR2
STR2 = STR1
#Store il comando nella variabile, $ comando
comand = "eco"
# Il comando 'Eval' eseguirà il comando 'echo' e stampa il valore della variabile
che contiene in un'altra variabile
Eval $ comando \ $ $ str2

Esegui lo script.

$ Bash Valtest2.sh

Il valore della variabile, $ str1 è stampato.

Esiste un altro modo per accedere al valore di una variabile che è il valore di un'altra variabile. Usando '!'Simbolo è possibile accedere al valore di questo tipo di variabile. Il comando seguente può essere utilizzato come alternativa dello script precedente e l'output sarà lo stesso.

$ str1 = "script shell"; str2 = str1; comand = "echo"; Eval $ Comando $ !str2

Esempio-4: crea una serie di variabili con valori e calcola la somma dei valori usando il comando "Eval"

Crea uno script bash denominato valutest3.Sh e aggiungi il seguente script. Questo script creerà una serie di variabili e memorizzerà i valori nelle variabili usando il comando "Eval". I valori delle variabili verranno aggiunti e memorizzati in una variabile denominata $ Sum. Successivamente, il comando "Echo" con i valori di stringa viene assegnato in una variabile utilizzata nel comando "valuta" per stampare il valore della variabile $ sum.

Valtest3.sh

#!/Bin/Bash
# Inizializza la variabile $ somma con il valore 0
somma = 0
# Dichiarare un ciclo che iterirà per 4 volte
per n in 1… 4
Fare
# Crea quattro variabili usando il comando Eval
Eval x $ n = $ n
# Aggiungi i valori della variabile con $ sum
Sum = $ (($ Sum+$ x $ n))
Fatto
# Assegna il comando 'echo' con la stringa in una variabile
comand = "echo 'il risultato di sum ='"
# comando 'eval' Stampare il valore di somma usando le variabili
Eval $ Comando $ Sum

Esegui lo script.

$ Bash Valtest3.sh

La somma delle quattro variabili è, 1+2+3+4 = 10 che viene stampata.

Esempio-5: utilizzando il comando 'Eval' per rimuovere l'elenco dei file

Crea un file bash denominato valutest4.Sh con il seguente script. Questo script leggerà tre argomenti della riga di comando come nomi di file che verranno rimossi e memorizzeranno i valori dell'argomento in una variabile di array, $ FN. Il comando 'rm' è archiviato in una variabile, $ comando. Per il ciclo viene dichiarato qui per recuperare ciascun nome file e rimuovere il file utilizzando il comando "Eval" se il file esiste.

Valtest4.sh

#!/Bin/Bash
#Declare un array
dichiarare -a fn
# Leggi tre argomenti della riga di comando e memorizza in tre indici dell'array
fn [0] = $ 1
fn [1] = $ 2
fn [2] = $ 3
# Memorizza il comando rimuovi in ​​una variabile
comand = "rm"
# per loop iterirà per tre volte di leggere tre elementi array
per indice in 0 1 2
Fare
# Controllare che il file esista o non esista
if [[-f $ fn [$ indice]]]; Poi
# se il file esiste, rimuovere il file
Eval $ comando $ fn [$ indice]
# Informare l'utente che il file viene rimosso
echo "$ fn [$ indice] viene eliminato."
Altro
#Inform l'utente che il file non esiste
echo "$ fn [$ indice] non esiste."
fi
Fatto

Esegui lo script.

$ Bash Valtest4.segni sh.articolo docx.Prodotto TXT.docx

Qui, sono forniti tre nomi di file al momento dell'esecuzione dello script. L'output mostra che segni.docx e prodotto.Docx esiste nella posizione corrente e i file vengono rimossi e, articolo.txt non esiste nella posizione corrente.

Conclusione

Qualsiasi comando bash può essere eseguito tramite il comando 'eval' dichiarando come una stringa. Il comando 'Eval' viene utilizzato in questo tutorial per eseguire diversi comandi integrati di Bash e creazione di una serie di variabili. Gli usi del comando "valuta" verranno cancellati per gli utenti e saranno in grado di utilizzare questo comando per vari scopi dopo aver letto questo tutorial.