Comando Eval no unix [closed]

0

Alguém pode converter esse código? Eu peguei isso da web.

Originalmente, há um parâmetro de um comando que é um sinal de mais (+) ou um sinal de menos (-). Mas desde que eu só preciso agora a adição (não é no parâmetro mais), eu quero que isso faça adição automaticamente.

-|+) eval '(('jd2=${jd1}${5}${6}'))'
jd2date $jd2
    
por Rui F Ribeiro 11.10.2013 / 02:44

2 respostas

1

O código é assim?

case "$5" in
    -|+) eval '(('jd2=${jd1}${5}${6}'))' jd2date $jd2 
esac

Se sim, você pode chamar o comando da seguinte forma:

script arg1 arg2 arg3 arg4 + 6

ou

script arg1 arg2 arg3 arg4 - 10

Você pode tornar o código assim:

 eval '(('jd2=${jd1}+${5}'))' jd2date $jd2 

O comando seria chamado assim:

script arg1 arg2 arg3 arg4 10

${5} , ${6} , ${jd1} e $jd2 são substituídos pelo conteúdo de suas respectivas variáveis. Variáveis que são números (por exemplo, $5 e $6 ) são posicionais parâmetros .

Como você não precisa mais que o operador seja colocado por uma variável, a chamada para eval não é necessário. Seu código pode ser assim:

 (( jd2=${jd1}+${5} ))
 jd2date $jd2

Ou com uma sintaxe ligeiramente mais clara:

 (( jd2 = jd1 + $5 ))
 jd2date $jd2
    
por 11.10.2013 / 04:05
0

Não tenho certeza do que você está tentando alcançar com o fragmento de código, mas aqui está um exemplo do uso do eval junto com uma comparação com operadores de substituição de comando semelhantes:

$ echo 'echo 2 + 2 | bc'
4
$ echo $(echo 2 + 2 | bc)
4
$ eval "echo 2 + 2 | bc"
4
$ echo "date"
date
$ eval "date"
Thu Oct 10 21:20:01 EDT 2013

Assim, eval "avalia" um comando ou uma série de comandos e retorna o resultado da execução desse comando. Para a vida de mim, não consigo descobrir qualquer uso para eval além do que pode ser feito executando os comandos diretamente ou usando a sintaxe de backquote ou $(...) .

    
por 11.10.2013 / 03:34