Polecenie Bash Eval

Polecenie Bash Eval
Polecenie „eval” jest używane w BASH do wykonywania argumentów jak polecenie powłoki. Argumenty są połączone w ciągu i traktowane jako wejście, aby polecenie powłoki do wykonania polecenia. „Eval” wykonuje polecenie w bieżącej powładzie. To polecenie jest przydatne, gdy wymaga wykonania dowolnego polecenia zawierającego operatora specjalnego lub zarezerwowanych słów kluczowych. To polecenie może być używane w dowolnym skrypcie również, w którym nazwa zmiennej jest nieznana do momentu wykonania skryptu. Ten samouczek pomoże użytkownikom Linux w nauce tego polecenia.

Składnia:

eval [argument…]

Tutaj argumenty są analizowane i łączone w ciąg, który będzie wykonywany przez powłokę. „Eval” zwraca kod stanu wyjścia po wykonaniu polecenia. „Eval” zwraca 0 jako kod stanu wyjścia, jeśli nie podano żadnego argumentu lub podano tylko argument zerowy.

Przykład-1: Wykonaj polecenie „WC” za pomocą „eval”

Załóżmy, że plik tekstowy o nazwie „dział.tekst”Zawiera następujący tekst. Całkowita liczba wierszy pliku może być policzona przez polecenie „WC”.

dział.tekst

CSE
Eee
Ete
JĘZYK ANGIELSKI
BBA
APTEKA

Poniższe polecenie będzie przechowywać polecenie „WC”, aby zliczyć całkowitą liczbę wierszy pliku, dział.tekst do zmiennej, $ mycommand.

$ mycommand = "dział WC -l.tekst"

Poniższe polecenie „Eval” uruchomi polecenie „WC” i wydrukuje całkowitą liczbę wierszy.

$ eval $ myCommand

Wyjście:

Wyjście to pokazuje dział.tekst Plik ma 6 linii.

Examplel-2: Wykonaj polecenie „expr” za pomocą „eval”

Utwórz plik bash o nazwie Evalutest.cii i dodaj następujący skrypt. Ten skrypt przypisuje dwie wartości liczb całkowitych do zmiennej $ x i $ y. Polecenia „expr” i „echo” są przypisywane do dwóch zmiennych, $ c1 i $ c2, które są wykonywane później za pomocą polecenia „eval”.

Evalutest.cii

#!/bin/bash
#Initializuj zmienną x i y
x = 5
y = 15
#Pierwsza zmienna poleceń służy do przypisania polecenia „Expr” do dodania wartości $ x i $ y
c1 = "'expr $ x + $ y'"
#Druga zmienna poleceń służy do przypisania polecenia „echo”
c2 = "echo"
#„ocena” obliczy i wydrukuje sumę $ x i $ y, wykonując polecenia $ c1
i zmienne C2 $
Eval C2 $ C1

Uruchom skrypt.

$ Bash Evalutest.cii

Suma 5 i 15 wynosi 20, która jest pokazana na wyjściu.

Przykład-3: Wydrukuj wartość zmiennej przypisanej w innej zmiennej

Utwórz skrypt bash o nazwie evalTest2.SH z następującym skryptem. W tym przypadku jedna zmienna służy do przypisania nazwy innej zmiennej, która zawiera dane ciągu. Polecenie „eval” wydrukuje wartość zmiennej zawierającej nazwę innej zmiennej jako treści.

Evalutest2.cii

#!/bin/bash
# Przypisz wartość ciągu do zmiennej, $ str1
str1 = „skrypt powłoki”
# Przypisz nazwę zmiennej, „str1” do zmiennej $ str2
str2 = str1
#Store polecenie do zmiennej, $ Command
Command = "echo"
# Polecenie „eval” wykona polecenie „echo” i wydrukuje wartość zmiennej
który zawiera w innej zmiennej
Command $ $ $ str2

Uruchom skrypt.

$ bash evalTest2.cii

Wartość zmiennej, $ str1 jest drukowana.

Istnieje inny sposób dostępu do wartości zmiennej, która nazwa jest wartością innej zmiennej. Za pomocą '!„Symbol można uzyskać dostęp do wartości tego typu zmiennej. Poniższe polecenie może być używane jako alternatywa poprzedniego skryptu, a wyjście będzie takie samo.

$ str1 = "Shell Script"; str2 = str1; command = "echo"; Command $ $ !str2

Przykład-4: Utwórz serię zmiennych z wartościami i oblicz sumę wartości za pomocą polecenia „eval”

Utwórz skrypt bash o nazwie evalTest3.sh i dodaj następujący skrypt. Ten skrypt utworzy serię zmiennych i przechowuje wartości w zmiennych za pomocą polecenia „eval”. Wartości zmiennych zostaną dodane i przechowywane w zmiennej o nazwie $ sum. Następnie polecenie „echo” z wartościami ciągu jest przypisane do zmiennej używanej w poleceniu „eval” do wydrukowania wartości zmiennej $ sum.

Evalutest3.cii

#!/bin/bash
# Zainicjuj zmienną $ suma o wartości 0
Sum = 0
# Zadeklaruj pętlę, która będzie iterowana przez 4 razy
Dla n w 1… 4
Do
# Utwórz cztery zmienne za pomocą polecenia Eval
eval x $ n = $ n
# Dodaj wartości zmiennej za pomocą $ sum
sum = $ (($ sum+$ x $ n))
zrobione
# Przypisz polecenie „Echo” do ciągu do zmiennej
Command = "echo 'wynik sum ='"
# Polecenie „ocenia” Wydrukuj wartość sumy za pomocą zmiennych
eval $ command $ sum

Uruchom skrypt.

$ bash evalTest3.cii

Suma czterech zmiennych to 1+2+3+4 = 10, które jest drukowane.

Przykład-5: Korzystanie z polecenia „eval” do usunięcia listy plików

Utwórz plik bash o nazwie EvalTest4.SH z następującym skryptem. Ten skrypt odczytuje trzy argumenty wiersza poleceń jako nazwy plików, które zostaną usunięte i przechowują wartości argumentu w zmiennej tablicy, $ fn. Polecenie „RM” jest przechowywane w zmiennej, $ Command. Dla pętli jest tutaj zadeklarowane w celu odzyskania każdej nazwy pliku i usunięcia pliku za pomocą polecenia „eval”, jeśli plik istnieje.

Evalutest4.cii

#!/bin/bash
#Declare i tablica
Deklaruj -a fn
# Przeczytaj trzy argumenty wiersza poleceń i przechowuj w trzech indeksach tablicy
fn [0] = 1 $
fn [1] = 2 USD
fn [2] = 3 USD
# Przechowuj polecenie Usuń w zmienną
Command = "rm"
# W przypadku pętli trzykrotnie itera będzie czytanie trzech elementów tablicy
dla indeksu w 0 1 2
Do
# Sprawdź plik istnieje lub nie istnieje
if [[-f $ fn [$ index]]]; Następnie
# Jeśli plik istnieje, usuń plik
eval $ command $ fn [$ index]
# Poinformuj użytkownika, że ​​plik jest usuwany
echo "$ fn [$ index] jest usuwany."
W przeciwnym razie
#Informuj użytkownika, że ​​plik nie istnieje
echo "$ fn [$ index] nie istnieje."
fi
zrobione

Uruchom skrypt.

$ bash evalTest4.Znaki.Pozycja DOCX.Produkt TXT.Docx

Tutaj podano trzy nazwy plików w momencie wykonywania skryptu. Wyjście pokazuje, że znaki.DOCX i produkt.DOCX istnieje w bieżącej lokalizacji, a pliki są usuwane i pozycja.TXT nie istnieje w bieżącej lokalizacji.

Wniosek

Każde polecenie bash można wykonać za pomocą polecenia „eval”, deklarując jako ciąg. W tym samouczku używane jest polecenie „eval” do wykonywania różnych wbudowanych poleceń BASH i tworzenia serii zmiennych. Zastosowanie polecenia „eval” zostaną wyczyszczone dla użytkowników i będą mogli użyć tego polecenia do różnych celów po przeczytaniu tego samouczka.