Строковая переменная в качестве параметра команды внутри сценария оболочки

1

Как я могу сохранить разделенную строку в переменной и использовать ее в качестве параметра команды внутри сценария оболочки?

Вот что я пытаюсь сделать:

DESTINATION='/mnt/External Harddisk'
FILE_NAME=$DESTINATION/home.tar.gz
INCREMENTAL=$DESTINATION/home.snar

tar -zcvpf $FILE_NAME \
--directory=/home \
--listed-incremental=$INCREMENTAL \
--exclude=.gvfs \
--exclude=.cache* \
--exclude=*/[Cc]ache* \
--exclude=.thumbnails* \
--exclude=*/[Tt]rash* \
--exclude=*~ \
--exclude=.dropbox* \
--exclude=*.vdi \
--exclude=*VirtualBox*VMs* \
.
Eduardo
источник

Ответы:

2

этот ответ может покрыть это Пробелы в переменных среды Linux?

Вы помещаете переменную среды в двойные кавычки. пример, демонстрирующий это ниже

я делаю ls 'asdf asdf' это ls для одного файла "adsf asdf" с пробелом в имени файла. Я хочу сделать это с переменной. Вы видите с двойными кавычками, это получает результат. Без кавычек он обрабатывает пространство как особенное и ищет файл asdf дважды. И с одинарными кавычками ls '$f' он ищет буквальный доллар ф. Но с двойными кавычками ls "$f" это работает, то есть дает тот же результат, что и ls 'asdf asdf',

$ ls 'asdf asdf' <ENTER>
ls: cannot access asdf asdf: No such file or directory

$ export f='asdf asdf' <ENTER>

$ echo $f <ENTER>
asdf asdf

$ ls $f <ENTER>
ls: cannot access asdf: No such file or directory
ls: cannot access asdf: No such file or directory

$ echo $f <ENTER>
asdf asdf

$ ls '$f' <ENTER>
ls: cannot access $f: No such file or directory


$ ls "$f" <ENTER>
ls: cannot access asdf asdf: No such file or directory
barlop
источник
-1

Любой символ пробела ставится перед строкой Escape, поэтому пробел будет в строке как '\' (обратный слеш + пробел). Надеюсь, это поможет.

Tien Vu
источник
1
что вы имеете в виду? как это? не работает pastebin.com/raw.php?i=bCa90GYe
barlop
1
Оболочка анализирует кавычки и экранирует их перед заменой переменных, поэтому размещение кавычек и / или экранирование в значениях переменных не приносит никакой пользы. Вам нужно поставить двойные кавычки вокруг ссылка на переменную.
Gordon Davisson
Пожалуйста, внимательно прочитайте вопрос. Ваш ответ делает не ответь на оригинальный вопрос.
DavidPostill
Приведите пример и протестируйте его. Вы могли бы даже попробовать это и обнаружить, что это не работает.
barlop