Я намерен использовать переменную powershell в скрипте, чтобы передать строковое значение команде, после чего команда выполняется с параметрами, определенными в строке. Я смотрю на это уже пару часов и не вижу, что делаю неправильно. Я упростил столько, сколько смогу. В надежде на свободные sh глаза я прилагаю изображение, показывающее:
a. скрипт, который я использую. Это три строки.
$Parms = "-it amazonlinux2 /bin/sh"
Write-Output "& docker run $Parms"
& docker run $Parms
б. командная строка PS, где я выполняю сценарий.
PS C:\dev\gamelift\serversdk\build> ./test
c. результат выполнения скрипта
& docker run -it amazonlinux2 /bin/sh
unknown shorthand flag: ' ' in - amazonlinux2 /bin/sh
See 'docker run --help'.
d. та же команда выполняется сразу же по приглашению.
PS C:\dev\gamelift\serversdk\build> docker run -it amazonlinux2 /bin/sh
e. правильный результат команды подсказки интерпретировать как команду? Я пробовал:
a. docker run $Parms
(без знака &)
b. & docker run "$Parms"
(в кавычках)
c. $Parms = "amazonlinux2 /bin/sh"
и & docker run -it $Parms
(разные ошибки)
d. $Parms = "amazonlinux2"
и & docker run -it $Parms /bin/sh
(работает)
e. экранирование (другая ошибка)
f. $Parms = "-it amazonlinux2 /bin/sh"
и каждый из & docker run $($Parms)
, & docker run ${$Parms}
и & docker run ${Parms}
Я чувствую себя немного глупо. Я не вижу, насколько верен Write-Output
, но команда call не работает. Это не может быть так сложно ...