나는 문제가 무엇인지 파악하지 못한 채 한 시간 동안 이것을 보았습니다. 어떤 이유로 else 문이 작동하지 않습니다.
#!/bin/bash
if [ $#=3 ]
then
echo $*
else
echo "error" 1>&2
exit
fi
답변1
문제는 다음 줄에 있습니다.
if [ $#=3 ]
주위에 공백이 없으므로 =
반드시 다음을 수행해야 합니다.
if [ -n $#=3 ]
=3
항상 존재하는 것처럼 항상 참인 테스트 이므로 else
결코 트리거되지 않습니다.
다음 주위에는 공백을 사용해야 합니다 =
.
if [ $# = 3 ]
또한 변수 확장 시 큰따옴표를 사용하여 단어 분리 및 경로 이름 확장을 방지합니다. 하지만 꼭 필요한 것은 아닙니다 $#
.