누군가가 내 스크립트의 오류를 지적할 수 있기를 바랍니다. 내 배움의 원천이 너무 잘못되었기 때문에 혼란스럽습니다.
이 스크립트의 목적:사용자가 입력한 숫자부터 숫자 1까지의 숫자를 계산합니다.
#!/bin/bash
echo -n Enter a number
read number
if (($number > 0)) ; then
index = $number
while [ $index => 1 ] ; do
echo $index
((index--))
break
done
fi
그것이 제공하는 오류 :색인: 명령을 찾을 수 없습니다
답변1
index = $number
=
변수에 값을 할당할 때 공백을 사용할 수 없습니다. 사용index=$number
하거나((index = number))
[ $index => 1 ]
나는 그것이index
1보다 크거나 같은지 확인하고 싶다고 생각합니다.[ $index -ge 1 ]
또는((index >= 1))
- 이 진술을 사용하는 이유는 무엇입니까
break
? 루프를 종료하는 데 사용됩니다. - 이
if
진술도 필수는 아닙니다. read -p
옵션을 사용하여 사용자에게 메시지를 추가 할 수도 있습니다.
함께 넣어보세요:
#!/bin/bash
read -p 'Enter a number: ' number
while ((number >= 1)) ; do
echo $number
((number--))
done
답변2
문제는 "if" 앞에 있습니다.
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
나는 당신이 다음과 같은 것을 원하는 것 같아요 :
#!/bin/bash
echo -n "Enter a number : "
read number
echo $number
if [ $number -gt "0" ] ; then
ind="$number"
while [ $ind -ge "1" ] ; do
echo $ind
((ind--))
done
fi
답변3
그럼 좀 살펴보는 게 좋을 것 같아
man index
변수 이름을 바꾸면 수정된 버전의 스크립트가 작동합니다.
#!/bin/bash
echo -n Enter a number
read num
if (($num > 0)) ; then
ind=$num
while [ $ind -ge 1 ] ; do
echo $ind
((ind--))
break
done
fi