我正在尝试使用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
我们如何执行远程计算机上可用的脚本?语法不同吗?
答案 0 :(得分:1)
您的脚本始终在当前工作目录中查找users.txt
。
在第一个示例中,当前工作目录是您的主目录;这就是为什么你必须用~/path_to_script/demo_script.sh
而不是./demo_script.sh
来运行脚本。因此,您的输出中的行数为~/users.txt
。
在第二个示例中,您在执行脚本之前将工作目录从~
更改为<{1}},因此输出包含~/path_to_script
的行数