Você já diminuiu bastante, e isso está apenas relacionado a pequenos problemas de sintaxe.
O que você tem, no pseudocódigo, é basicamente isso:
if d3 equals 0 then
set d4 equal to ((d2/10)+1000)
else
set d4 equal to (d2/10)
end if
que se traduz em, no bash (que é o que você mais provavelmente usaria para scripts de shell no Linux):
if test "$d3" -eq "0"; then
d4=$(( ( $d2 / 10 ) + 1000 ))
else
d4=$(( $d2 / 10 ))
fi
Você precisa do fi
para finalizar a instrução if
e $(( ... ))
é a expansão aritmética no bash. Note que $( ... )
é completamente diferente, que é substituição de processo que pega a saída do comando dado e a retorna. Altamente útil, mas não exatamente o que você está procurando aqui.
O acima assume que $d2
, $d3
e $d4
já estão definidos para os valores corretos e que não há variáveis de ambiente com nomes conflitantes definidos.
Se você sabe por um fato que $d3
nunca conterá nada além de dígitos, você pode acabar com as citações nos parâmetros para test
, mas eu gosto de mantê-lo como um internet Segura. Para saber mais sobre o que você pode fazer com test
(no bash), dê uma olhada em man bash
sob o cabeçalho Comandos internos do Shell . Outros shells podem usar o comando externo, caso em que man test
se aplica (você pode usar o comando externo no bash, por exemplo, através de if command test ...; then
, se preferir, por algum motivo).
O ponto-e-vírgula antes do then
é necessário porque then
é realmente um comando separado no bash; você também pode colocar then
em uma linha separada e omitir o ponto-e-vírgula, que é outra maneira de formatar exatamente a mesma coisa.