小编ste*_*eng的帖子

shell函数问题 - 从shell语句中删除单引号

我在命令下运行时遇到问题:

当我运行:cmssh 12np时,我打算调用已定义的函数cmssh,最终我期待一个像这样的shell命令行:

sshpass -p password ssh mydomain\\userxyz@host.com
Run Code Online (Sandbox Code Playgroud)

,见以下来源:

alias 12np='ssh mydomain\\stephencheng@userxyz@host.com'


function cmssh () {
   set -x
   local aliascmd=$1
   cmdstr=$(alias $aliascmd | cut -d'=' -f2 | cut -d"'" -f2)
   echo $cmdstr
   sshpass -p "$cmpw" $cmdstr
   #debug cmdstr : sshpass -p password 'ssh mydomain\\userxyz@host.com'
}
Run Code Online (Sandbox Code Playgroud)

但是,最后一步总是将结果呈现为:

sshpass -p password 'ssh mydomain\\userxyz@host.com'
Run Code Online (Sandbox Code Playgroud)

我试过很多方法试图删除单引号,但不知道它是如何可能的.

请参阅调试信息:

~  cmssh 12np
+cmssh:2> local 'aliascmd=12np'
+cmssh:4> cmdstr=+cmssh:4> alias 12np
+cmssh:4> cmdstr=+cmssh:4> cmdstr=+cmssh:4> cut '-d=' -f2
+cmssh:4> cut '-d'\' -f2
+cmssh:4> cmdstr='ssh mydomain\\userxyz@host.com'
+cmssh:7> echo 'ssh mydomain\\userxyz@host.com' …
Run Code Online (Sandbox Code Playgroud)

shell sh

5
推荐指数
1
解决办法
268
查看次数

标签 统计

sh ×1

shell ×1