ssh login@server_ip "comand1;command2;...."
对于上述命令的理解总是习惯性的认为是先ssh到远端server上,然后再在该server上执行引号里面的command。
其实这种理解是错误的,所有的命令都是在本地server上传到远端server上,然后才执行的
example:
test=`ssh login@server_ip "ls -rtl | tail -1"`
echo $test
注意:$test里的内容是远端server的
还有一个疑问,就是ssh远端执行命令的时候,awk不管用
如:
test=`ssh login@server_ip "ls -rtl | tail -1 | awk '{print $9}' "`
这条命令输出来的依然是test=`ssh login@server_ip "ls -rtl | tail -1"`输出的结果
具体原因还没找到,估计是因为引号匹配的问题
修改如下:
test=`ssh login@server_ip "ls -rtl | tail -1"`
new_test=`echo $test | awk '{print $9}' `
echo $new_test
就得到想要的值了。