假设我有一个这样的bash function
地方:首先连接到远程桌面,然后在连接到远程桌面的命令行时使用第二个参数(这就是为什么我使用单引号引起来。我不确定如何围绕该$2
论点。
my_func () {
ssh blah blah blah $1 'cd $2'
}
我不确定应该如何指定第二个参数。我试图在本地计算机上以以下方式运行此功能:my_func a b
,其中b是远程桌面中的目录,但是我似乎没有预期的输出。
您需要$2
采用适合远程用户登录外壳的方式进行引用。例如,假设它是像伯恩(Bourne)风格的:
shquote() {
LC_ALL=C awk -v q=\' '
BEGIN{
for (i=1; i<ARGC; i++) {
gsub(q, q "\\" q q, ARGV[i])
printf "%s ", q ARGV[i] q
}
print ""
}' "$@"
}
my_func () {
ssh blah blah blah "$1" "cd -- $(shquote "$2")"
}
例如,shquote()
将转换Stephane's dir
为,'Stephane'\''s dir'
因此cd -- 'Stephane'\''s dir'
命令行由类似Bourne的远程Shell解释为cd
与Stephane's dir
目录参数一起运行。
无论如何,只要在远程主机上运行一个Shell并cd
不能达到任何有用的目的。
在如何在ssh上执行任意简单命令而又不知道远程用户的登录shell的情况下,可以阅读更多的文章(以及更多的选项,包括远程用户的登录shell不像Bourne一样的情况)?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句