간단한 if/else가 작동하지 않음

간단한 if/else가 작동하지 않음

한시간 동안 이것저것 살펴봤는데 뭐가 문제인지 알 수가 없네요. 어떤 이유로 else 문이 작동하지 않습니다.

#!/bin/bash
if [ $#=3 ]
then
echo $*
else
echo "error" 1>&2
exit
fi

답변1

문제는 다음 줄에 있습니다.

if [ $#=3 ]

주위에 공백이 없으므로 =다음을 수행해야 합니다.

if [ -n $#=3 ]

test는 항상 true =3이므로 else절대 실행되지 않습니다.

다음 주위에는 공백을 사용해야 합니다 =.

if [ $# = 3 ]

단어 분리 및 경로 이름 확장을 피하기 위해 변수 확장 시 큰따옴표를 사용할 수도 있지만 이 경우 꼭 필요한 것은 아닙니다 $#.

관련 정보