쉘 스크립트를 통해 mkdir을 사용하여 일괄적으로 디렉토리를 생성하려고 합니다. 아래 스크립트는 다음과 같습니다.
#!bin/bash
mkdir /tmp/report*/testfolder*/testdoank
실행하면 오류가 발생합니다.
-bash: ./makefolder.sh: bin/bash: bad interpreter: No such file or directory
뭐가 문제 야?
답변1
해시뱅의 잘못된 경로로 인해 오류가 발생한 것 외에도 mkdir
명령 자체에도 문제가 있었습니다.
glob은 목록에만 사용할 수 있다는 점을 기억하세요.기존의따라서 보이는 모든 항목은 mkdir /tmp/foo*
기존 디렉터리를 인수로 전달합니다 mkdir
. /tmp/foo1
존재하는 경우 해당 디렉터리로 전달된 mkdir
다음 이미 존재한다고 불평합니다. 만약에/tmp/foo2
아니요존재한다, 그럴 것이다아니요에 전달되며 mkdir
생성되지 않습니다. 새 디렉터리를 생성하려면 추가 작업을 수행해야 합니다.
어떤 디렉토리를 생성하려는지는 확실하지 않지만 testdoank
일치하는 각 디렉토리 아래에 디렉토리를 생성 한다고 가정하면 /tmp/report*/testfolder*
다음과 같이 할 수 있습니다.
for dir in /tmp/report*/testfolder*; do
mkdir "$dir"/testdoank
done
답변2
질문의 원래 형식으로 인해 쉘 문에 "#" 문자가 누락된 것 같습니다. 그러나 실제 오류는 bash 경로에 /가 누락되어 발생합니다.
이것은 bash 스크립트에서 쉘을 결정하는 올바른 방법입니다.
#!/bin/bash
답변3
쉘 스크립트는 #!
단순히 가 아니라 로 시작해야 합니다 !
.
답변4
사용
mkdir -p 상위 디렉토리 1/하위 디렉토리 1 par2/하위 디렉토리 2/손자 디렉토리 2
이렇게 하면 모든 것이 함께 생성됩니다. 더 복잡한 것이 필요한 경우 알려주시기 바랍니다.