Comando Bash Eval

Comando Bash Eval
O comando 'Eval' é usado no Bash para executar argumentos como um comando shell. Os argumentos são unidos em uma string e tomados como entrada para o comando Shell para executar o comando. 'Eval' executa o comando no shell atual. Este comando é útil quando exige executar qualquer comando que contenha um operador especial ou palavras -chave reservadas. Este comando pode ser usado em qualquer script também onde o nome da variável é desconhecido até executar o script. Este tutorial ajudará os usuários do Linux a aprender o uso deste comando.

Sintaxe:

Eval [argumento…]

Aqui, os argumentos são analisados ​​e combinados em uma corda que será executada pela concha. 'avaliar' retorna um código de status de saída depois de executar o comando. 'avaliar' retorna 0 como código de status de saída se nenhum argumento for fornecido ou apenas o argumento nulo for fornecido.

Exemplo 1: Execute 'wc' comando usando 'avaliar'

Suponha que um arquivo de texto chamado “departamento.TXT”Contém o seguinte texto. O número total de linhas do arquivo pode ser contado pelo comando 'WC'.

departamento.TXT

CSE
Eee
Ete
INGLÊS
BBA
FARMACIA

O comando a seguir armazenará o comando 'WC' para contar as linhas de números totais do arquivo, departamento.TXT para a variável, $ myCommand.

$ myCommand = "Departamento WC -L.TXT"

O seguinte comando 'avaliar' executará o comando 'wc' e imprimirá o número total de linhas.

$ EVAL $ myCommand

Saída:

A saída mostra que departamento.TXT O arquivo tem 6 linhas.

Exemplel-2: Execute 'Expr' Comando usando 'Eval'

Crie um arquivo bash chamado EvalTest.sh e adicione o seguinte script. Este script atribuirá dois valores inteiros à variável $ x e $ y. Os comandos 'Expr' e 'Echo' são atribuídos em duas variáveis, $ C1 e $ C2, que são executados posteriormente usando o comando 'avaliar'.

EvalTest.sh

#!/BIN/BASH
#Initialize a variável x e y
x = 5
y = 15
#A variável de primeiro comando é usada para atribuir o comando 'expr' para adicionar os valores de $ x e $ y
c1 = "'expr $ x + $ y'"
#A Segunda Variável de Comando é usada para atribuir o comando 'Echo'
c2 = "eco"
#'avaliar' calculará e imprimirá a soma de $ x e $ y executando os comandos de $ C1
e variáveis ​​de $ C2
Eval $ C2 $ C1

Execute o script.

$ Bash Evaltest.sh

A soma de 5 e 15 é 20 que é mostrada na saída.

Exemplo 3: Imprima o valor de uma variável que é atribuída em outra variável

Crie um script bash chamado EvalTest2.SH com o seguinte script. Aqui, uma variável é usada para atribuir o nome de outra variável que contém dados de string. O comando 'avaliar' imprimirá o valor da variável que contém o nome de outra variável como conteúdo.

EvalTest2.sh

#!/BIN/BASH
# Atribua um valor de string à variável, $ str1
str1 = "script de shell"
# Atribua o nome da variável, "STR1" à variável $ str2
str2 = str1
#Store o comando na variável, $ comando
comando = "eco"
# 'avaliar' comando executará o comando 'eco' e imprimirá o valor da variável
que contém em outra variável
Eval $ comando \ $ $ str2

Execute o script.

$ Bash EvalTest2.sh

O valor da variável, $ str1 é impresso.

Há outra maneira de acessar o valor de uma variável que nome é o valor de outra variável. Usando '!'Símbolo O valor desse tipo de variável pode ser acessado. O comando a seguir pode ser usado como uma alternativa do script anterior e a saída será a mesma.

$ str1 = "shell script"; str2 = str1; command = "echo"; Eval $ comando $ !str2

Exemplo 4: Crie uma série de variáveis ​​com valores e calcule a soma dos valores usando o comando 'avaliar'

Crie um script bash chamado EvalTest3.sh e adicione o seguinte script. Este script criará uma série de variáveis ​​e armazenará os valores nas variáveis ​​usando o comando 'avaliar'. Os valores das variáveis ​​serão adicionados e armazenados em uma variável chamada $ SUM. Em seguida, o comando 'echo' com valores de string é atribuído a uma variável usada no comando 'avaliar' para imprimir o valor da variável $ sum.

EvalTest3.sh

#!/BIN/BASH
# Inicialize a variável $ sum com o valor 0
soma = 0
# Declare um loop para iterar por 4 vezes
para n em 1… 4
fazer
# Crie quatro variáveis ​​usando o comando de avaliação
Eval x $ n = $ n
# Adicione os valores da variável com $ SUM
soma = $ (($ sum+$ x $ n))
feito
# Atribuir comando 'eco' com string em uma variável
command = "echo 'o resultado da soma ='"
# 'avaliar' comando imprimir o valor da soma usando variáveis
Eval $ comando $ sum

Execute o script.

$ Bash EvalTest3.sh

A soma das quatro variáveis ​​é, 1+2+3+4 = 10 que é impresso.

Exemplo 5: Usando o comando 'avaliar' para remover a lista de arquivos

Crie um arquivo Bash chamado EVAVEST4.SH com o seguinte script. Este script lerá três argumentos da linha de comando como nomes de arquivos que serão removidos e armazenarão os valores do argumento em uma variável de matriz, $ fn. O comando 'rm' é armazenado em uma variável, $ comando. Para o loop é declarado aqui para recuperar cada nome do arquivo e remover o arquivo usando o comando 'avaliar' se o arquivo existir.

EvalTest4.sh

#!/BIN/BASH
#Declare uma matriz
declarar -a fn
# Leia três argumentos da linha de comando e armazene em três índices da matriz
fn [0] = $ 1
fn [1] = $ 2
fn [2] = $ 3
# Armazene o comando Remover em uma variável
command = "rm"
# para o loop iterará por três vezes ler três elementos de matriz
para índice em 0 1 2
fazer
# Verifique se o arquivo existe ou não existe
se [[-f $ fn [$ index]]]; então
# Se o arquivo existir, remova o arquivo
Eval $ comando $ fn [$ index]
# Informe ao usuário que o arquivo é removido
eco "$ fn [$ index] é excluído."
Outro
#Inform ao usuário que o arquivo não existe
eco "$ fn [$ index] não existe."
fi
feito

Execute o script.

$ Bash EvalTest4.SH Marcas.Item DOCX.Produto txt.Docx

Aqui, três nomes de arquivos são fornecidos no momento da execução do script. A saída mostra que marcas.DOCX e produto.Docx existem no local atual e os arquivos são removidos e, item.txt não existe no local atual.

Conclusão

Qualquer comando Bash pode ser executado pelo comando 'avaliar' declarando como uma string. O comando 'Eval' é usado neste tutorial para executar diferentes comandos internos do Bash e criar uma série de variáveis. Os usos do comando 'avaliar' serão limpos para os usuários e eles poderão usar esse comando para vários fins depois de ler este tutorial.