执行远程计算机上可用的脚本

时间:2017-02-28 21:56:33

标签: bash shell ssh zsh

我正在尝试使用ssh执行远程计算机上可用的脚本。如果通过ssh从客户端运行或在ssh之后运行到服务器,输出会有所不同。

脚本将修剪文件。

tail -n 100 users.txt > temp.txt
rm users.txt
mv temp.txt users.txt
echo $(wc -l users.txt)
echo Done

客户端运行

client@client_mac $ ssh user@server_mac '~/path_to_script/demo_script.sh'

输出:

0 users.txt
Done

服务器端的ssh之后

client@client_mac $ ssh user@server_mac
user@server_mac $ cd ~/path_to_script/
user@server_mac $ ./demo_script.sh

输出:

100 users.txt
Done

我们如何执行远程计算机上可用的脚本?语法不同吗?

1 个答案:

答案 0 :(得分:1)

您的脚本始终在当前工作目录中查找users.txt

在第一个示例中,当前工作目录是您的主目录;这就是为什么你必须用~/path_to_script/demo_script.sh而不是./demo_script.sh来运行脚本。因此,您的输出中的行数为~/users.txt

在第二个示例中,您在执行脚本之前将工作目录从~更改为<{1}},因此输出包含~/path_to_script的行数