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

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

나는 문제가 무엇인지 파악하지 못한 채 한 시간 동안 이것을 보았습니다. 어떤 이유로 else 문이 작동하지 않습니다.

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

답변1

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

if [ $#=3 ]

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

if [ -n $#=3 ]

=3항상 존재하는 것처럼 항상 참인 테스트 이므로 else결코 트리거되지 않습니다.

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

if [ $# = 3 ]

또한 변수 확장 시 큰따옴표를 사용하여 단어 분리 및 경로 이름 확장을 방지합니다. 하지만 꼭 필요한 것은 아닙니다 $#.

관련 정보