3개의 특정 읽기 변수가 필요한 스크립트에 구문 오류가 있습니까?

3개의 특정 읽기 변수가 필요한 스크립트에 구문 오류가 있습니까?

나는 나에게 주어진 대본에 대한 응답을 손으로 써야 했습니다. 내가 출력으로 제공해야 하는 두 가지 정보 세트는 읽을 변수가 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
  1. 쉘 연산이 사용됩니다.$(( ... ))

  2. $(())및 외부의 변수를 인용하는 것을 잊지 마세요 [[ ]]. 따옴표 없이 $a, $b 또는 $c가 정의되지 않은 경우(예: 사용자가 숫자를 1~2개만 입력하는 경우) -gt두 개의 피연산자가 필요하므로 구문 오류가 발생합니다.

관련 정보