Подстановочные знаки выполняются после подстановки переменных. Чтобы вставить буквальное значение замещения, но не использовать подстановочные знаки, используйте двойные кавычки вокруг $var
ссылки.
Как скрипты bash расширяют файловые глобусы?
559
vfclists
В этом коде excludespec
переменная, как ожидается, будет соответствовать всей ее подстроке, но, по-видимому, она оценивает фактические файлы, соответствующие ей при выполнении, а не передает ее точное представление команде tar, используя ее.
excludespec=$\_$USER\_
имя хоста.bkcd_backup*
Конечный результат - создаваемый архив не соответствует списку исключений, поэтому вывод tar:
tar: .: file changed as we read it
Строка, определяющая это, делает что-то, о чем я не знаю?
Вот код:
#!/bin/sh # bkcd - backup current directory in situ DMY_M() { date +%Y%m%d_%H%M } timestring=$(DMY_M) echo `pwd` - $timestring > .bkcdspec filename=$\_$USER\_`hostname`.bkcd_backup.$timestring.tar.gz excludespec=$\_$USER\_`hostname`.bkcd_backup* fullexclude="$excludespec"tar.gz echo excludespec - $excludespec echo filename - $filename echo fullexclude - $fullexclude tar -cpzf $filename --exclude=$fullexclude . rm .bkcdspec
Предполагая, что `/ bin / sh` указывает на` / bin / dash` (обычно это так), ваш скрипт не является скриптом * bash *, это скрипт * dash *.
Dennis 11 лет назад
0
Вам не нужно [задавать один и тот же вопрос дважды] (http://stackoverflow.com/q/14425149/7552)
glenn jackman 11 лет назад
1
1 ответ на вопрос
2
Nicole Hamilton
Похожие вопросы
-
2
.profile в Mac OS X?
-
1
Приостановить все, кроме x задач, интенсивно использующих процессор
-
10
Как я могу найти в истории bash и повторно запустить команду?
-
-
2
Можно ли передать выходные данные одной команды двум другим командам?
-
8
Переименуйте группу файлов одной командой
-
2
Почему мой путь не обновляется * сейчас *?
-
5
Как удалить символическую ссылку на каталог?
-
8
Спаси меня от бессмысленного терминала
-
9
Как можно добавить номер строки и табуляцию к каждой строке текстового файла?
-
1
Когда я должен положить конфигурации в .bashrc против. .bash_profile?