쉘 스크립트에서 mkdir을 사용하여 일괄적으로 디렉토리 생성

쉘 스크립트에서 mkdir을 사용하여 일괄적으로 디렉토리 생성

쉘 스크립트를 통해 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

이렇게 하면 모든 것이 함께 생성됩니다. 더 복잡한 것이 필요한 경우 알려주시기 바랍니다.

관련 정보