Я пытаюсь вызвать собственную команду 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
, с теми же результатами (работает из терминала, но не из скрипта).