Сценарий оболочки, чтобы проверить, существует ли каталог, а если нет, то создать его? - PullRequest
5 голосов
/ 30 мая 2010

Я пытаюсь создать сценарий, чтобы определить, существует ли каталог, а если нет, создать его.

Как я могу это сделать?

Я немного покопался и нашел подсказку:

test -d directory

... вернет true или false в зависимости от того, существует каталог или нет.

Но как мне связать это с mkdir?

Ответы [ 2 ]

9 голосов
/ 30 мая 2010

mkdir -p $directory должен делать то, что вы хотите. Опция -p создаст все необходимые родительские каталоги. Если $directory уже существует как каталог, команда ничего не делает и завершается успешно. Если $directory обычный файл, он останется нетронутым, и команда завершится ошибкой с соответствующим сообщением об ошибке.

Без опции -p для mkdir стратегия test ... || mkdir ... может потерпеть неудачу, если $directory содержит '/', а некоторый компонент этого пути еще не существует. В любом случае test является излишним, поскольку mkdir выполняет тот же тест внутри.

3 голосов
/ 30 мая 2010
test ... || mkdir ...
...