Ошибка конкатенации пути к каталогу в скрипте bash
У меня есть простой файл Bash и хочу выполнить команду CD:
#!/bin/bash
dir_path="~/Desktop/param_bind_b"
cd $dir_path
по какой-то причине, когда я пытаюсь запустить этот скрипт в терминале, я получаю эту ошибку:
student @ ubuntu: ~ $ openptv_current_install.bash /home/student/Desktop/scripts/openptv_current_install.bash: строка 3: cd: ~/Desktop/param_bind_b: такого файла или каталога нет
когда я запускаю команду cd ~/Desktop/param_bind_b
"вручную" он работает как ожидалось.
что мне здесь не хватает?
2 ответа
Тильда (~
) не будет расширяться оболочкой, когда помещается в кавычки. Просто удалите цитаты:
#!/bin/bash
dir_path=~/Desktop/param_bind_b
cd "$dir_path"
Другое решение, поместите только ~
вне кавычек или использования $HOME
вместо. Дополнительно вы должны добавить || exit
позади cd
,
#!/bin/bash
dir_path=~"/Desktop/param_bind_b"
cd "$dir_path" || exit
Или же
#!/bin/bash
dir_path="$HOME/Desktop/param_bind_b"
cd "$dir_path" || exit
так что вы можете использовать другие переменные, например,
#!/bin/bash
desktop_dir="/Desktop"
dir_path=~"$desktop_dir/param_bind_b"
cd "$dir_path" || exit
или же
#!/bin/bash
desktop_dir="/Desktop"
dir_path=~"$desktop_dir"/param_bind_b
cd "$dir_path" || exit
или же
#!/bin/bash
desktop_dir="/Desktop"
dir_path="$HOME$desktop_dir"/param_bind_b
cd "$dir_path" || exit
В будущем проверьте свои сценарии здесь. ;)