Проблемы с цитатой - PullRequest
       26

Проблемы с цитатой

1 голос
/ 25 января 2011

Я пытаюсь вызвать собственную команду Windows из Cygwin, используя run, но, как это происходит, команда (которую я беру из реестра) уже цитируется и состоит из нескольких частей:

"C:\path\to\file.exe" -- "some argument"

Если я использую run "C:\path\to\file.exe" -- "some argument" из терминала, он работает нормально, но как только я помещаю его в скрипт Bash, он пытается избежать двойных кавычек и добавляет одинарные кавычки вокруг всей вещи , что разрушает его:

\"C:\path\to\file.exe\" -- \"some argument\"

Если я введу echo перед тем, как попытаться выполнить команду, она отобразит ожидаемую команду, но команда run не будет выполнена.

echo $command
run $command

Я довольно новичок в написании сценариев bash, поэтому я ожидаю, что мне не хватает чего-то фундаментального:)

Обновление : мне кажется, я запутался в одинарных кавычках.

Обновление : Вот соответствующая часть скрипта:

command=`cat /proc/registry/hkey_classes_root/http/shell/open/command/@`
command=${command/"%1"/$target}
run $command

Вот что я попробовал в ответ на предложение SiegeX:

command=`cat /proc/registry/hkey_classes_root/http/shell/open/command/@`
command=(${command/"%1"/$target})
run "${command[@]}"

Я также попробовал cmd /c в качестве альтернативы run, с теми же результатами (работает из терминала, но не из скрипта).

Ответы [ 2 ]

2 голосов
/ 25 января 2011

Это работает для меня:

command=$(< /proc/registry/hkey_classes_root/http/shell/open/command/@)
command=${command//\"/}
command=$(cygpath "$command")
command=${command/\%1/$target}
eval run $command
0 голосов
/ 25 января 2011

Цитировать $command как это: run "$command"

Если это не сработает, попробуйте это:

...