我在命令下运行时遇到问题:
当我运行: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)