![3개의 특정 읽기 변수가 필요한 스크립트에 구문 오류가 있습니까?](https://linux55.com/image/78395/3%EA%B0%9C%EC%9D%98%20%ED%8A%B9%EC%A0%95%20%EC%9D%BD%EA%B8%B0%20%EB%B3%80%EC%88%98%EA%B0%80%20%ED%95%84%EC%9A%94%ED%95%9C%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%20%EA%B5%AC%EB%AC%B8%20%EC%98%A4%EB%A5%98%EA%B0%80%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
나는 나에게 주어진 대본에 대한 응답을 손으로 써야 했습니다. 내가 출력으로 제공해야 하는 두 가지 정보 세트는 읽을 변수가 3 3 3과 20 3 5인지 여부입니다.
스크립트를 먼저 테스트하기로 결정했지만 여전히 19행에서 구문 오류가 발생하고 문제가 무엇인지 알 수 없습니다. 간격과 괄호의 여러 변형을 테스트했지만 제대로 작동하지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다.
#!/bin/sh
## Name of the program is challengelab3.2
## request information from the user
echo enter 3 numbers
read a b c
## check for proper range of numbers
if [ $a -gt 10 -o $b -gt 10 -o $c -gt 5 ]; then
echo "numbers out of range"
exit 1
fi
# process_data
x=$(($a + $b + $c))
while [ $x -gt 0 ]
do
echo (( $x / 2%2 ))
x=$((expr $x -1))
done
# end of program
답변1
이 시도:
#!/bin/sh
## Name of the program is challengelab3.2
## request information from the user
echo enter 3 numbers
read a b c
[ -z "$a" ] && echo a is missing, enter all 3 numbers && exit 1
[ -z "$b" ] && echo b is missing, enter all 3 numbers && exit 1
[ -z "$c" ] && echo c is missing, enter all 3 numbers && exit 1
if [ "$a" -gt 10 -o "$b" -gt 10 -o "$c" -gt 5 ]; then
echo "numbers out of range"
exit 1
fi
# process_data
x=$((a + b + c))
while [ "$x" -gt 0 ]
do
echo $(( x / 2 % 2 ))
x=$((x - 1))
done
쉘 연산이 사용됩니다.
$(( ... ))
$(())
및 외부의 변수를 인용하는 것을 잊지 마세요[[ ]]
. 따옴표 없이 $a, $b 또는 $c가 정의되지 않은 경우(예: 사용자가 숫자를 1~2개만 입력하는 경우)-gt
두 개의 피연산자가 필요하므로 구문 오류가 발생합니다.