执行String s1 = "Y";
do
{
System.out.println("Do you want to continue? Y/N");
s1 = scan.nextLine();
}
while(s1=="Y");
命令后跟远程命令和引号和没有引号的远程命令有什么区别?
E.g。有什么区别:
ssh
和
ssh remotehost tar xf archivename.tar
或者有什么区别:
ssh remotehost "tar xf archivename.tar"
和
ssh remotehost <path to script>/myscript.sh param
答案 0 :(得分:2)
尾随参数组合成一个字符串,该字符串作为参数传递给远程计算机上登录shell的-c
选项。在你的第一个例子中,没有什么区别。但是,请考虑以下事项:
$ ssh remotehost echo *
这里,*
在本地扩展,结果传递给远程机器。在我的机器上,我的工作目录由一个包含撇号(单引号)的条目组成,因此远程主机尝试运行像
bash -c "echo chepner's folder"
当然导致错误。
$ ssh remotehost "echo *"
现在,远程主机获得文字*
,但在传递给bash -c
之前,它需要进行shell扩展。因此,您将输出远程主机上主目录中的所有文件。
$ ssh remotehost "echo \*"
最后,远程shell在其输入中获得引用的星号,因此您将获得单个文字*
作为输出。
答案 1 :(得分:1)
引号可防止扩展特殊字符。
想象一下,如果你的命令中有任何你想要远程执行(;, &, &&, |, ||, >, >>
等)。它们会在实际到达远程主机之前生效,因为bash不会知道所有这只是ssh
的参数。
此外,如果您的脚本的路径包含更多空格,则它们会丢失,并且无法找到脚本。