Назад | Перейти на главную страницу

Почему Кот цитирует отдельные слова при подстановке команд

Все,

Я пытаюсь использовать подстановку команд, чтобы сохранить аргументы командной строки в файле. Моя первоначальная мысль заключалась в том, чтобы просто поместить аргументы командной строки в одну строку в файле, а затем вызвать мою команду как command $( cat [arguments-file] ) other arguments Однако это, похоже, не работает для меня правильно.

Я начал заниматься отладкой, включив отладку bash через set -x и результат команды

command $( /tmp/arg-file ) File.xml
+ command -m '"Manhattan' Item 'MockService"' -P 'Hellp=Value' File.xml

Содержимое моего файла аргументов

-m "Manhattan Item MockService" -P Hellp=Value

Может ли кто-нибудь объяснить, почему при подстановке команд добавляются одинарные кавычки?

Они не. Одиночные кавычки видны только через set -x чтобы устранить неоднозначность слов для читателя. Однако хранить такие аргументы команд в лучшем случае проблематично. Рассмотрите возможность хранения одного аргумента в каждой строке и с помощью read и массив для создания командной строки.