Escreva um script que leia um número e conte até 0?

0

Eu tenho que escrever um script que leia um número e conte até 0.

Continuo recebendo este erro:

practice123.sh: line 10: let: 1=[: attempted assignment to non-variable (error token is "=[") 

Não consigo fazer com que o loop faça a contagem regressiva corretamente. Estou usando o shell check e minha sintaxe parece bem. Qualquer entrada seria apreciada.

#!bin/bash
# This script will take one number from the CLI and see if the argument  given is a valid variable. Then it will count that variable down to 0.

var1=var1
echo "Enter a number."
read var1
until [ "$var1" -le 0 ]
do
    echo "$var1"
    let $var1=[ $var1 -1 ]
done
    
por Mister123 29.11.2015 / 21:20

1 resposta

1

As expressões aritméticas usam parênteses duplos, e não colchetes:

(( var1 = var1 - 1 ))

ou menor

(( var1 -= 1 ))
(( var1-- ))
(( --var1 ))

Você também pode usar let :

let var1=var1-1
let var1--
let --var1
let 'var1 = var1 - 1'  # Quotes needed for whitespace.

Você também pode usar a expansão aritmética (mas por quê?)

var1=$(( var1 - 1 ))
    
por 29.11.2015 / 21:43