linux bash, ошибка при назначении пути в переменной для использования его как целевой папки - PullRequest
0 голосов
/ 24 февраля 2020

мой сценарий очень прост, я пытаюсь сохранить путь в переменной, затем использовать его для копирования файлов, сценарий длиннее, много копий, но с использованием той же переменной:

mainserverapp="${HOME}/Dropbox/servers/app-env-files"
cp -av "${mainserverapp}/.env*" ./

но я получаю эту ошибку:

cp: cannot stat '/home/.../Dropbox/servers/app-env-files/.env*': No such file or directory

но папка существует, если я делаю 'ls', что-то происходит с переменной ... где моя ошибка?

ОБНОВЛЕНИЕ: я думаю я нашел это !!! проблема звездочка, любое решение, чтобы не копировать файл за файлом?

1 Ответ

0 голосов
/ 24 февраля 2020

Звездочка (*) раскрывается только в том случае, если она не находится внутри кавычек и не экранирована.

При "${mainserverapp}/.env*" только $mainserverapp заменяется его значением, * используется как это так.

Переместите звездочку за пределы кавычек:

cp -av "${mainserverapp}"/.env* ./

Вы также можете написать это "${mainserverapp}/.env"*, но более разумно ставить внутри кавычек только часть Dynami c , которые заменяются значением, которое вы не можете знать. .env не вызывает проблем, его не нужно заключать в кавычки. И .env* представляет логическую часть выражения, файлы, имена которых начинаются с .env.

Прочтите о «Расширении имени файла» в Bash документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...