Tenho um arquivo .sh que tem isso.
Estou passando um inteiro para o arquivo em $0
...
period=20000
period=period+($0*1000)
echo "$period"
...
O que estou tentando fazer é que period = period + ($0 * 1000)
a segunda linha está me dando um erro de sintaxe e eu quero saber como fazer isso corretamente.
Tentei usar (($0*1000))
, mas não vi diferença.
Eu também tentei
smth=1000*$3
period=period+smth
e eu entendo
20000000+1000*
Os argumentos para um script começam em
$1
, não$0
.Para fazer matemática, você precisa de expansão aritmética:
Você também pode usar
e muitas outras maneiras.
Você mencionou que
$0
é um inteiro (acho que você quis dizer$1
, porque$0
é o script em si , mas enfim), então a resposta do @choroba é ótima. Generalizando, se$1
também pudesse ser um float, você poderia usarbc
para fazer o cálculo, porque$((...))
só pode fazer matemática de inteiros. Então, você poderia usar isto:Os parênteses
($1*1000)
não são realmente necessários aqui, pois a multiplicação precede a adição, mas eu os adicionei para abordar seu comentário .