Ошибка конкатенации пути к каталогу в скрипте 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 «вручную», она запускается, как и ожидалось.

Что мне здесь не хватает?

5
задан 15 September 2015 в 16:44

2 ответа

Тильда (~) не будет расширена оболочкой когда вставленные кавычки. Просто удалите кавычки:

#!/bin/bash
dir_path=~/Desktop/param_bind_b
cd "$dir_path"
8
ответ дан 16 September 2015 в 02:44
  • 1
    спасибо @muru, который является потрясающим... (теперь мне просто нужно basename -s для принятия wildcards/regex...), таким образом, я могу заставить его обрубить пред И отправить inst суффиксы (но я didn' t находят любые preinst сценарии с adduser так пожатие плеч ), – Zanna 5 December 2016 в 23:59

Другое решение, место только ~ внешняя сторона кавычки или использование $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

В будущем, проверяют сценарии здесь . ;)

3
ответ дан 16 September 2015 в 02:44
  • 1
    @Zanna политика Debian рекомендует postinst, таким образом, it' s маловероятный you' d находят любого, который использует preinst (но я предполагаю, что редкий случай мог бы существовать). – muru 6 December 2016 в 00:08

Другие вопросы по тегам:

Похожие вопросы: