숫자를 읽고 0까지 카운트다운하는 스크립트를 작성하시겠습니까?

숫자를 읽고 0까지 카운트다운하는 스크립트를 작성하시겠습니까?

숫자를 읽고 0까지 세는 스크립트를 작성해야 합니다.

이 오류가 계속 발생합니다.

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

루프가 올바르게 카운트다운되도록 할 수 없는 것 같습니다. 쉘 검사를 사용하고 있는데 구문이 괜찮아 보입니다. 어떤 조언이라도 대단히 감사하겠습니다.

#!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

답변1

산술 표현식에서는 대괄호 대신 이중 괄호를 사용합니다.

(( var1 = var1 - 1 ))

또는 더 짧음

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

let다음을 사용할 수도 있습니다.

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

산술 확장을 사용할 수도 있습니다(그런데 왜 그럴까요?)

var1=$(( var1 - 1 ))

답변2

#!/bin/bash
# linux countdown script
echo "countdown loading....."
sleep 2
echo "Enter value below"
read number
countdown=$number
until [ $countdown -le "0" ];
do
    echo "$countdown"
    (( countdown -= 1 ))
    if [ $countdown ];
    then
        sleep 1
    fi
done
    echo "countdown completed"

관련 정보