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