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