Bash eval comando

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

Syntax:

eval

Aqui, os argumentos são analisados e combinados em uma string que será executada pela shell. O `eval` retorna um código de status de saída após a execução do comando. O `eval` retorna 0 como código de status de saída se nenhum argumento for fornecido ou apenas argumento nulo for fornecido.

Example-1: Execute o comando `wc` utilizando `eval`

Suponha um arquivo de texto chamado “department.txt” que contenha o seguinte texto. O número total de linhas do arquivo pode ser contado pelo comando `wc`.

departamento.txt

CSE
EEE
ETE
ENGLISH
BBA
PHARMACY

>

O seguinte comando irá armazenar o comando `wc` para contar o número total de linhas do arquivo, department.txt para a variável, $mycommand.

$ mycommand=”wc -l department.txt”

O seguinte comando `eval` irá executar o comando `wc` e imprimir o número total de linhas.

$ eval $mycommand

Output:

A saída mostra esse departamento.O arquivo txt tem 6 linhas.

Examplel-2: Execute o comando `expr` usando `eval`

Crie um arquivo bash chamado evaltest.sh e adicione o seguinte script. Este script irá 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 executadas posteriormente utilizando o comando `eval`.

evaltest.sh

#!/bin/bash
#Initializar a variável x e y
x=5
y=15
# A primeira variável de comando é utilizada para atribuir o comando `expr` para adicionar os valores de $x e $y
c1=”`expr $x + $y`”
#O segundo comando é utilizada para atribuir `echo` comando
c2=”echo”
#`eval` irá calcular e imprimir a soma de $x e $y executando os comandos de $c1
e $c2 variáveis
eval $c2 $c1

Executar o script.

$ bash evaltest.sh

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

Example-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 uma string de dados. O comando `eval` irá imprimir o valor da variável que contém o nome de outra variável como conteúdo.

evaltest2.sh

#!/bin/bash
# Atribuir um valor string à variável, $str1
str1=”Shell Script”
# Atribuir o nome da variável, “str1” à variável $str2
str2=str1
#Digite o comando para a variável, $command
command=”echo”
# comando `eval` irá executar o comando `echo` e imprimir o valor da variável
que contém em outra variável
comando $eval \${$str2}

Executar o script.

$ bash evaltest2.sh

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

Há outra maneira de acessar o valor de uma variável cujo nome é o valor de outra variável. Usando o símbolo ‘!’ o valor deste tipo de variável pode ser acessado. O seguinte comando pode ser usado como uma alternativa do script anterior e a saída será a mesma.

$ str1=”Shell Script”; str2=str1; command=”echo”; eval $command ${!str2}

Example-4: Crie uma série de variáveis com valores e calcule a soma dos valores utilizando o comando `eval`

Crie um script bash chamado evaltest3.sh e adicione o seguinte script. Este script irá criar uma série de variáveis e armazenar os valores nas variáveis utilizando o comando `eval’. 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 que é utilizada no comando `eval` para imprimir o valor da variável $sum.

evaltest3.sh

#!/bin/bash
# Inicializar a variável $sum com o valor 0
sum=0
# Declare um para loop que irá iterar por 4 vezes
para n em {1…4}
do
# Crie quatro variáveis usando o comando eval
eval x$n=$n
# Adicione os valores da variável com $sum
sum=$(($sum+$x$n))
done
# Atribua o comando `echo com string numa variável
command=”echo ‘O resultado da soma='”
# comando `eval` imprime o valor da soma utilizando variáveis
eval $command $sum

Executar o script.

$ bash evaltest3.sh

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

Example-5: Usando o comando `eval` para remover a lista de arquivos

Criar um arquivo bash chamado evaltest4.sh com o seguinte script. Este script irá ler três argumentos de linha de comando como nomes de arquivos que serão removidos e armazenar os valores dos argumentos em uma variável de array, $fn. O comando `rm’ é armazenado em uma variável, $command. Para loop é declarado aqui para recuperar cada nome de arquivo e remover o arquivo utilizando o comando `eval` se o arquivo existir.

evaltest4.sh

#!/bin/bash
#Declare an array
declare -A fn
# Leia três argumentos de linha de comando e armazene em três índices do array
fn=$1
fn=$2
fn=$3
# Armazene o comando remove em uma variável
command=”rm”
# para loop irá iterar por três vezes para ler três elementos do array
para índice em 0 1 2
do
# Verifique se o arquivo existe ou não existe
se } ]]; then
# se o arquivo existe, então remova o arquivo
eval $command ${fn}
# Informe ao usuário que o arquivo foi removido
echo “${fn} is deleted”
Else
#Informe ao usuário que o arquivo não existe
echo “${fn} not exist.”
fi
done

Executar o script.

$ bash evaltest4.sh marks.docx item.txt product.docx

Aqui, três nomes de arquivo são fornecidos no momento da execução do script. A saída mostra que marks.docx e product.docx existem na localização atual e os arquivos são removidos e, item.txt não existe na localização atual.

Conclusion

Any bash command can be executed by `eval` command by declarando como uma string. O comando `eval` é utilizado neste tutorial para executar diferentes comandos embutidos de bash e criar uma série de variáveis. As utilizações do comando `eval` serão limpas para os usuários e eles poderão utilizar este comando para vários propósitos após a leitura deste tutorial.

Deixe uma resposta

O seu endereço de email não será publicado.