[bash] 폴더가없는 경우 Bash를 사용하여 폴더를 만드는 방법은 무엇입니까?

#!/bin/bash
if [!-d /home/mlzboy/b2c2/shared/db]; then
    mkdir -p /home/mlzboy/b2c2/shared/db;
fi;

작동하지 않는 것 같습니다. 누구든지 도울 수 있습니까?



답변

먼저, bash에서 “[“는 마지막 인수로 문자열 “]”이 필요한 명령이므로 닫는 대괄호 앞의 공백 ( “!”와 “-d”사이에 두 개의 별도 인수가 필요함) 역시) 중요하다 :

if [ ! -d /home/mlzboy/b2c2/shared/db ]; then
  mkdir -p /home/mlzboy/b2c2/shared/db;
fi

둘째, -p switch to를 사용 mkdir하고 있기 때문에,이 검사는 처음에는 수행하기 때문에 쓸모가 없습니다. 그냥 써:

mkdir -p /home/mlzboy/b2c2/shared/db;

그리고 그게 다야.


답변

실제로 존재하는지 여부를 확인할 필요가 없습니다. 존재하는 경우 이미 작성하려고하므로 mkdir 만 수행합니다.

mkdir -p /home/mlzboy/b2c2/shared/db


답변

간단히 :

mkdir /path/to/your/potentially/existing/folder

폴더가 이미 존재하면 mkdir에서 오류가 발생합니다. 오류를 무시하려면 다음을 작성하십시오.

mkdir -p /path/to/your/potentially/existing/folder

점검이나 그와 같은 것을 할 필요가 없습니다.


참고로 :

-p, --parents no error if existing, make parent directories as needed http://man7.org/linux/man-pages/man1/mkdir.1.html


답변

[]괄호 안에 공백이 필요합니다 .

#!/bin/bash
if [ ! -d /home/mlzboy/b2c2/shared/db ]
then
    mkdir -p /home/mlzboy/b2c2/shared/db
fi


답변

보다 깔끔한 방법으로 쉘 논리 연산자의 바로 가기 평가를 활용하십시오. 왼쪽이 참인 경우에만 연산자의 오른쪽이 실행됩니다.

[ ! -d /home/mlzboy/b2c2/shared/db ] && mkdir -p /home/mlzboy/b2c2/shared/db


답변

코드를 약간 다시 포맷해야한다고 생각합니다.

#!/bin/bash
if [ ! -d /home/mlzboy/b2c2/shared/db ]; then
    mkdir -p /home/mlzboy/b2c2/shared/db;
fi;


답변