单引号和双引号在ssh命令中的区别:
以一个例子来说明问题:
假设本地机器上配置了java环境变量,在本地执行
echo $JAVA_HOME=/opt/jdk
- 假若我想查看远程机器上的JAVA环境变量,则只能使用单引号:
ssh user@node ' echo $JAVA '
相当于远程执行:echo $JAVA
' ' 中的$JAVA不会被shell解析,而是当做一个字符串。
- 如果我们想把本机JAVA环境路径传递到远程服务器,则使用双引号:
ssh user@node "echo $JAVA "
相当于远程执行: echo /opt/jdk
shell 首先会解析$JAVA,得到它的值。