Моя собственная переменная для длинных путей

Я пишу какой-то резервный скрипт, а целевой путь довольно длинный. Могу ли я определить что-то вроде этого?

TARGET='/media/user/externaldrive/folder with spaces/blahblah'

И затем использовать его как часть пути?

cp file.txt '$TARGET/some folder with spaces/file.txt'

Переменная может быть определена только для этого скрипта.

Каков правильный способ сделать это? Потому что это то, что я получаю:

cp: cannot create regular file ‘$TARGET/some folder with spaces/file.txt’: No such file or directory
1
задан 1 November 2015 в 03:14

2 ответа

Существуют определенные правила установки имени переменной в bash:

Имя Vaiables может содержать только символы из [[:alnum:]_], то есть A-Z, a-z, 0-9 и [ f8]. Имя переменной не может начинаться с цифры

Таким образом, получая значение переменной, если у вас нет ни одного из этих символов, следующего за переменной, вам не нужно {}, чтобы обернуть имя переменной:

$ 1foo=bar
1foo=bar: command not found

$ foo1=bar

$ echo "$foo1"
bar

$ echo "$foo12"

$ echo "${foo1}2"
bar2

$ echo "$foo1_"

$ echo "${foo1}_"
bar_

В вашем случае:

Имя Vaiables может содержать только символы из [[:alnum:]_], то есть A-Z, a-z, 0-9 и _. [ ! d2]

Имя Vaiables может содержать только символы из [[:alnum:]_], т.е. A-Z, a-z, 0-9 и _.

Имя переменной не может начинаться с цифры
1
ответ дан 23 May 2018 в 16:12
  • 1
    Ты прав! Упрощенный и отредактированный мой ответ. – Byte Commander 1 November 2015 в 18:20

Короткий ответ: ДА! Вы получили это на 100% правильно. Хотя, если вы хотите сделать эту переменную доступной для других скриптов, не забудьте запустить export TARGET.

-2
ответ дан 23 May 2018 в 16:12
  • 1
    Ну, я должен делать что-то неправильно, потому что я всегда получаю: cp: невозможно создать обычный файл 'TARGET / some folder /': Нет такого файла или каталога – Sebastian 1 November 2015 в 01:57
  • 2
    Вы используете mkdir '$TARGET/blah/'? – Daniel 1 November 2015 в 02:09
  • 3
    Извините, но простой ДА в этом случае просто ошибается. -1 – Byte Commander 1 November 2015 в 03:12

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

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