我正在尝试编写一个脚本,我有一个循环来登录到多个远程机器并在每台机器内执行一个脚本.这是一个例子:
for ((j=1; j < 2; j++)); do
mchname="n"$j
ssh -T $mchname <<'ENDSSH'
./run_script < input > output &
ENDSSH
done
Run Code Online (Sandbox Code Playgroud)
每当我尝试执行上面的脚本时,我得到:"警告:这里 - 文档在第37行由文件结尾分隔(想要`ENDSSH')"
我是ssh的新手,所以我确信我犯了一个愚蠢的错误.谁能建议我一个解决方案?谢谢.
mrb*_*mrb 13
您的bash脚本中存在问题.heredoc结束标记(脚本中的ENDSSH)不能缩进.
试试这个:
ssh -T $mchname <<'ENDSSH'
./run_script < input > output &
ENDSSH
# ^ no indentation for that line
Run Code Online (Sandbox Code Playgroud)
编辑:
此外,您可以通过将其作为参数传递给ssh来运行远程系统上的命令,而不是将其作为标准输入提供.该命令将由用户的远程shell执行:
ssh -T $mchname './run_script < input > output &'
Run Code Online (Sandbox Code Playgroud)