d_nospace= echo ${d_space//[[:blanl:]]/}
...
mkdir -p "$d_nospace"
Вы пытаетесь создать каталог, именем которого является пустая строка.Сообщение «Нет такого файла или каталога» немного вводит в заблуждение.Настоящая проблема в том, что имя неверно.
В переменной не должно быть пробелов до или после символа =
.Вы можете назначить переменную как часть другой команды, например:
foo=bar some_command
выполнит some_command
с $foo
, установленным на bar
.
Таким образом, ваша команда вызываетКоманда echo
с переменной d_nospace
, установленной в ничто.
Как указывает ответ Джона , вам не нужно использовать echo
здесь - на самом деле это не так.не имеет смысла делать это.Если вы хотите удалить пробелы, вы бы написали:
d_nospace="${d_space//[[:blanl:]]/}"
(я не проверял это на точность; не должно ли это быть [[:blank:]]
?
Кстати, я бы не сталНе используйте вывод date
в качестве имени файла или каталога. Пробелы и двоеточия могут вызывать проблемы, вывод может варьироваться в зависимости от настроек локали, и результат не очень хорошо сортируется.
Вот какЯ бы сделал это:
now="$(date +%F-%H%M%S)"
mkdir -p "$now"
Когда я напишу это, имя каталога будет 2019-05-29-191819
, которое достаточно читабельно, хорошо сортируется и позволяет избежать проблемных символов.