1

Я синхронизирую пользовательский двоичный файл в форме: ./prog --opt1=arg1 --opt2=arg2 --opt3="arg3"

Требуется, чтобы третий вариант имел аргумент в кавычках. В скрипте я сохраняю все параметры:

exec=./prog
opts="--opt1=arg1 --opt2=arg2 --opt3=\"arg3\""

Когда я пытаюсь синхронизировать программу, я получаю сообщение об ошибке, когда моя программа анализирует аргументы. Я предполагаю, что это потому, что он видит последний аргумент как не цитируемый. Вывод /bin/time:

\bin\time -v $exec $opts

Error parsing args (из моей программы)
Command being timed: "./prog --opt1=arg1 --opt2=arg2 --opt3="arg3""

Однако , когда я просто скопировать и вставить, что он утверждает , что команда, она работает нормально:

./prog --opt1=arg1 --opt2=arg2 --opt3="arg3" работает нормально

Что делает /bin/time и как я могу это исправить? Я предполагаю, что это связано с кавычками, как, может быть, это работает eval или что-то. Я не уверен, что с этим делать.

1 ответ1

0

Я исправил это, установив всю команду в переменную, а затем оценив это:

$ full_cmd="/bin/time -v $exec $opts"
$ eval $full_cmd

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .