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


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* \
.

Ответы:


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

-1

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


1
что вы имеете в виду? как это? не работает pastebin.com/raw.php?i=bCa90GYe
— barlop

1
Оболочка анализирует кавычки и экранирует их перед заменой переменных, поэтому размещение кавычек и / или экранирование в значениях переменных не приносит никакой пользы. Вам нужно поставить двойные кавычки вокруг ссылка на переменную.
— Gordon Davisson

Пожалуйста, внимательно прочитайте вопрос. Ваш ответ делает не ответь на оригинальный вопрос.
— DavidPostill

Приведите пример и протестируйте его. Вы могли бы даже попробовать это и обнаружить, что это не работает.
— barlop
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.