3

我正在尝试编写一个脚本,其中我有一个循环来登录到多台远程机器并在每台机器内执行一个脚本。这是一个例子:

for ((j=1; j < 2; j++)); do 

  mchname="n"$j

  ssh -T $mchname <<'ENDSSH'    
    ./run_script < input > output &    
  ENDSSH

done

每当我尝试执行上述脚本时,我都会得到:“警告:第 37 行的此处文档由文件结尾分隔(需要 `ENDSSH')”

我是 ssh 的新手,所以我确信我犯了一个愚蠢的错误。谁能建议我一个解决方案?谢谢。

4

1 回答 1

13

你的 bash 脚本有问题。heredoc 结束标记(脚本中的 ENDSSH)不能缩进。

试试这个:

  ssh -T $mchname <<'ENDSSH'    
    ./run_script < input > output &    
ENDSSH
# ^ no indentation for that line

编辑:

此外,您可以通过将命令作为参数传递给 ssh 在远程系统上运行命令,而不是将其作为标准输入提供。该命令将由用户的远程 shell 执行:

ssh -T $mchname './run_script < input > output &'
于 2012-06-23T20:46:44.140 回答