다음 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"]
then
then
if [ -d "/$home/DB_handouts" ]; then
또한 상황에 따라 mkdir -p
이 작업을 수행할 수 있는지 확인하십시오. 예제를 보면 다음이 작동해야 한다고 생각합니다.
mkdir -p /foo/bar
chmod 777 /foo/bar
답변2
스크립트에 여러 가지 문제가 있습니다.
;
@heemayl도 지적했듯이 와 사이에 하나가 있거나 자체 줄에 있어야 합니다.]
then
then
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
불만 사항이 없습니다.