当从shell脚本通过cygwin运行时,如何将参数传递给powershell脚本?
我有一个sh脚本,比如说a.sh,我在其中对windows服务器执行ssh(配置了cygwin),并运行一个当从shell脚本通过cygwin运行时,如何将参数传递给powershell脚本?,powershell,shell,ssh,server,cygwin,Powershell,Shell,Ssh,Server,Cygwin,我有一个sh脚本,比如说a.sh,我在其中对windows服务器执行ssh(配置了cygwin),并运行一个B.ps1脚本,该脚本使用a.sh中定义的参数 a.sh的内容: var1="abc" var2="xyz" #sshing to windows box /usr/bin/scp -r -q /home/$user/Jenkins/workspace/job/jobname $user2@$x:/cygdrive/C/ /usr/bin/ssh
B.ps1
脚本,该脚本使用a.sh
中定义的参数
a.sh的内容
:
var1="abc"
var2="xyz"
#sshing to windows box
/usr/bin/scp -r -q /home/$user/Jenkins/workspace/job/jobname $user2@$x:/cygdrive/C/
/usr/bin/ssh $user2@$x 'powershell C:\\B.ps1 $var1 $var2'
这是在运行脚本,但没有任何参数,当我在B.ps1中写入主机变量名时,我会得到空白输出,这意味着var1和var2值不会传递给我的ps1脚本
B.ps1的内容
:
$var1=$args[0]
$var2=$args[1]
Write-Host "var1 is:" $var1
Write-Host "var2 is:" $var2
我曾尝试在我的sh脚本中使用双引号,但没有成功,似乎有某种方法可以传递参数,但可能遗漏了语法上的任何内容
请提供帮助。/usr/bin/ssh$user2@$x“powershell C:/B.ps1$var1$var2”
- 为了扩展shell变量引用
和$var1
,需要双引号($var2
)而不是单引号(“…”
)“…”
- 通过使用
作为路径分隔符(PowerShell可与/
互换接受该分隔符),您无需转义\
字符,而在从\
转换到'…'
时,必须将转义字符加倍;也就是说,以下方法也会起作用:'…
/usr/bin/ssh$user2@$x“powershell C:\\\\B.ps1$var1$var2”
/usr/bin/ssh$user2@$x“powershell C:/B.ps1$var1$var2”
- 为了扩展shell变量引用
和$var1
,需要双引号($var2
)而不是单引号(“…”
)“…”
- 通过使用
作为路径分隔符(PowerShell可与/
互换接受该分隔符),您无需转义\
字符,而在从\
转换到'…'
时,必须将转义字符加倍;也就是说,以下方法也会起作用:'…
/usr/bin/ssh$user2@$x“powershell C:\\\\B.ps1$var1$var2”