Linux에 폴더가 있는지 확인하려면 else if를 사용하세요.

Linux에 폴더가 있는지 확인하려면 else if를 사용하세요.

다음 bash 스크립트가 있습니다.

if [ -d "/$home/DB_handouts"] then
 echo "Directory DB_handouts found"
else
mkdir /$home/DB_handouts
 chmod 777 /$home/DB_handouts
fi

위 코드를 실행하면 오류가 발생합니다.

./file.sh: line 12: syntax error near unexpected token `else'
./file.sh: line 12: `   else'

이 문제를 어떻게 해결할 수 있나요?

답변1

;와 사이에 세미콜론( )(또는 개행)을 추가 해야 합니다 .if [ -d "/$home/DB_handouts"]thenthen

if [ -d "/$home/DB_handouts" ]; then

또한 상황에 따라 mkdir -p이 작업을 수행할 수 있는지 확인하십시오. 예제를 보면 다음이 작동해야 한다고 생각합니다.

mkdir -p /foo/bar
chmod 777 /foo/bar

답변2

스크립트에 여러 가지 문제가 있습니다.

  • ;@heemayl도 지적했듯이 와 사이에 하나가 있거나 자체 줄에 있어야 합니다.]thenthen
  • handouts"사이에 공백이 있어야 합니다.]
  • 일관되게 들여쓰기를 해야 하지만 오류는 발생하지 않습니다. 또는 @skwlisp가 제안한 대로 -m옵션 을 사용해야 합니다.mkdir

그것은 다음과 같습니다:

if [ -d "/$home/DB_handouts" ] 
then
  echo "Directory DB_handouts found"
else
  mkdir -m 777 /$home/DB_handouts
fi

물론 위의 가정이 /$home존재하며 다음을 사용하여 모든 것을 더 쉽게 구현할 수 있습니다.

mkdir -p -m 777 /$home/DB_handouts

디렉토리가 이미 존재하는 경우 -p불만 사항이 없습니다.

관련 정보