알겠어요
$ ./5_divisible_by_1_to_10.sh
./5_divisible_by_1_to_10.sh: line 16: [: -eq: unary operator expected
false
true
을 위한:
divisible_by () {
under_test=$1
from=2
to=4
divisible=0
for ((check=from; check<=to; check++)) {
if [ $(($under_test % $check)) -ne 0 ]; then
divisible=1
fi
}
return $divisible
}
divider=10
x= divisible_by "$divider"
if [ $x -eq 0 ]; then # <--- Line 16
echo "$x true"
else
echo "$x false"
fi
divider=12
if divisible_by $divider; then
echo "true"
else
echo "false"
fi
12를 사용한 두 번째 호출은 잘 작동하지만 10(결과를 표시하려고 하는 경우)을 사용한 첫 번째 호출에서는 오류가 발생합니다.
$x
주위에 따옴표를 추가하면 "$x"
다른 오류가 발생합니다.
$ ./5_divisible_by_1_to_10.sh
./5_divisible_by_1_to_10.sh: line 16: [: : integer expression expected
false
true
답변1
존재하다
if [ $x -eq 0 ]
x
행이 비어 있기 때문에
x= divisible_by "$divider"
잘못된 것입니다: divisible_by
빈 환경 변수로 호출되었지만 쉘 환경에서 설정하려고 x
시도하지도 않았습니다 . x
다음을 수행해야 합니다.
divisible_by "$divider"
x=$?
그리고 항상 변수를 인용해야 합니다.