如何从脚本 (csh/tcsh) 调用 ssh?

How to call ssh from script(csh/tcsh)?

我有不同的服务器和不同的 IP,我可以在任何服务器中使用 ssh 并使我的数据库完好无损(我不知道如何,我只是一个用户)。 我已经编写了一个脚本,使用 ssh 在第一台服务器所在的同一目录中从一台服务器移动到另一台服务器。

在这里你可以看到最后的命令,如果我输入就会起作用:

ssh -X usr@192.168.1.xyz -t 'cd /home/usr/regression && exec /bin/csh'

下面是小脚本的一部分:

set path = $PWD  
set user =   

set cmd = "ssh -X $user@192.168.$ip3.$ip4 -t 'cd $path && exec $SHELL'"
echo $cmd;
$cmd;

因为它是 csh/tcsh 脚本我只想 运行

$cmd

命令,但它给出了这条信息:

ssh: Command not found.

虽然如果我复制、粘贴和 运行 我得到的最终命令:

echo "$cmd" 

喜欢:

ssh -X usr@192.168.1.xyz -t 'cd /home/usr/regression && exec /bin/csh'

然后它工作正常。

csh 中的 path 变量是一个绑定到 PATH 环境变量的魔术数组。当你更改它时,你丢失了原来的 PATH。不只是 ssh,所有外部命令都会在此之后失败,因为可以找到其中的 none,除非它们在 $PWD 中,这是您的新 PATH.

将您的 path 变量命名为其他名称。