Проблема в том, что $destination_path
относится к каталогу, который не существует. Как то так:
mv /path/to/file.txt /path/to/non/existent/directory/
возвращает ошибку, а
mv /path/to/directory/ /path/to/non/existent/directory/
переименует /path/to/directory/
в /path/to/non/existent/directory/
(при условии, что /path/to/non/existent/
- это существующий каталог, только без подпапки с именем directory
).
Если вы ожидаете, что $destination_path
еще не существует, вы можете добавить команду mkdir
:
mkdir "$destination_path"
mv "$source_path" "$destination_path"
если вы ожидаете, что может не существует, вы можете добавить его условно:
[[ -d "$destination_path" ]] || mkdir "$destination_path"
mv "$source_path" "$destination_path"
и если вы ожидаете, что существует , значит, вам нужно отладить!
(Кстати, в зависимости от вашей конкретной ситуации, вам может пригодиться mkdir -p
. Он рекурсивно создает каталог и всех необходимых родительских каталогов, и он не против, если каталог уже существует.)