ssh远程执行命令的符号转义问题
远程执行命令
- 前提条件
配置ssh免密码登陆。
- 命令
ssh _host "cmd..."
- 脚本
ssh _host <<EOF cmd1 cmd2 ... EOF
特殊字符的转义
远程执行脚本的情况下,脚本中的内容可视为是双引号包含起来的。
远程执行命令的情况下,例如:ssh _host "${COMMOND}":
- 使用单引号的时候,$COMMAND定义的命令字符都会在本地被去掉特殊意义,只是一串完全没有解析引用的字符串传过去远程主机;
- 如果是使用双引号时,$COMMAND定义的特殊命令字符都会在本地被解析引用,比如上面COMMAND中的反引号、EXTRACT_DIR变量、i变量,所以此时要在COMMAND中的特殊字符前加上转义符号“”,这样就会去掉在本地的解析引用;但是如果COMMAND变量中也有一个BAK_TIME变量引用前是不用加转义符的,因为这个变量就是希望在本地引用的。
总结
: ssh远程执行的命令中使用单引号时,所有变量、特殊字符都不会在本地解析引用,会原封不动地传过去远程主机;如果在命令中有变量或特殊字符在本地进行解析引用的,命令就得使用双引号括起来,此时命令中不需要在本地解析引用的变量或特殊字符就需要在其前面加上转义符“”。
相关推荐
mmyCSDN 2019-12-13
超哥Blog 2012-03-17
itisyang 2011-05-23
明鱼 2010-08-23
ConquerALL 2010-06-07
kongguguren 2010-05-03
wanzi 2010-03-20
hongsheyoumo 2010-01-18
谈世赞 2012-12-14
lichuanlong00 2010-01-07
colin00 2012-04-02
MrRaoJL 2011-06-17
迷题 2010-12-10
付海军 2009-02-12