У меня есть команда rsync, которая работает как ожидалось, когда я ввожу ее непосредственно в терминал. Команда содержит несколько аргументов типа --include='blah'
и --exclude='foo'
. Однако, если я сохраню эту команду в однострочном файле под названием «myfile», и я попробую «cat myfile» (или, что то же самое, $(cat myfile)
), команда rsync ведет себя по-разному.Разница между вводом команды оболочки и сохранением ее в файл и использованием `cat myfile` для ее выполнения?
Я уверен, что это точно такая же команда в обоих случаях.
Ожидается ли это/объяснимо?
Удаление цитат/цитат и разбиение слов. Запустите 'set -x', прежде чем запускать обе версии команды, чтобы увидеть разницу. –
Что бы вы ни пытались, '$ (cat myfile)' - это убогий способ сделать это. Точка (aka 'source' в Bash) оценивает команды в файле в контексте текущей оболочки, если это то, что вы хотите выполнить. Так что просто скажите '. myfile'. – tripleee