!["-eq: 단항 연산자가 false로 예상됨"이 나타나는 이유는 무엇입니까? [복사]](https://linux55.com/image/35803/%22-eq%3A%20%EB%8B%A8%ED%95%AD%20%EC%97%B0%EC%82%B0%EC%9E%90%EA%B0%80%20false%EB%A1%9C%20%EC%98%88%EC%83%81%EB%90%A8%22%EC%9D%B4%20%EB%82%98%ED%83%80%EB%82%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
알겠어요
$ ./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=$?
그리고 항상 변수를 인용해야 합니다.