执行 ssh
命令后跟带引号的远程命令和不带引号的远程命令有什么区别?
例如之间有什么区别:
ssh remotehost tar xf archivename.tar
和
ssh remotehost "tar xf archivename.tar"
或有什么区别:
ssh remotehost <path to script>/myscript.sh param
和
ssh remotehost "<path to script>/myscript.sh param"
最佳答案
尾随参数组合成一个字符串,作为参数传递给远程计算机上登录 shell 的 -c
选项。在您的第一个示例中,几乎没有区别。但是,请考虑以下事项:
$ ssh remotehost echo *
这里,*
在本地展开,结果传递给远程机器。在我的机器上,我的工作目录由一个包含撇号(单引号)的条目组成,因此远程主机尝试运行如下命令
bash -c "echo chepner's folder"
当然会导致错误。
$ ssh remotehost "echo *"
现在远程主机得到一个文字 *
,但它在传递给 bash -c
之前需要进行 shell 扩展。结果,您输出了远程主机上主目录中的所有文件。
$ ssh remotehost "echo \*"
最后,远程 shell 在其输入中得到一个引号 星号,因此您得到一个单一文字 *
作为输出。
关于linux - ssh 命令和引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40431392/