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