当我通过ssh向远程服务器发送命令时,有什么区别:
ssh [email protected] 'foo'
和
ssh [email protected] "foo"
我没有传递任何variables,并且在远程运行命令时得到了不同的结果。
这个例子可能没有什么区别,但是肯定会有这样的一个:
ssh [email protected] "echo $PATH"
原因是bash会评估和replace本地机器上的双引号内的variables,但会在单引号内的目标机器上执行 。
子壳体也是如此:
ssh [email protected] "echo `hostname`" ssh [email protected] "echo $(hostname)"
但是,function似乎并非如此:
$ foo () { echo "Foo"; } $ foo Foo $ ssh [email protected] "foo" bash: foo: command not found
在双引号内也不会发生全局变化:
$ ssh [email protected] "ls -l *" $ ssh [email protected] "ls -l numbered_files.?.gz"