在此处的文档中使用 shell 脚本远程运行本地脚本



我需要远程运行脚本。我正在使用以下外壳脚本

    for server in $servers
     do
     LOCAL_VAR=<some_value>
     ssh $server <<EOF
      command1 $LOCAL_VAR
      command2..
      ..
      exit
      EOF
    done

bash 显示意外的文件语法结束错误。如果我删除此块,其余代码可以正常工作。你能告诉我远程执行脚本的正确方法吗?

如果要在here-doc中放置这样的缩进,则应添加类似于以下代码的-

for server in $servers
do
    LOCAL_VAR=<some_value>
    ssh $server <<-EOF
    command1 $LOCAL_VAR
    command2..
    ..
    exit
    EOF
done

复制粘贴时要小心,有时您可能会对制表符或空格感到惊讶。

关闭 heredoc 的 EOF 不得有任何前导空格。Bash 认为在找到脚本结尾之前它已经到达字符串的末尾。

http://tldp.org/LDP/abs/html/here-docs.html

此处文档最后一行的结束限制字符串必须从第一个字符位置开始。不能有前导空格。限制字符串后面的尾随空格同样会导致意外行为。空格可防止识别限制字符串。

解决方案是在脚本的第 1 列中使用文本标签。tl;dr 文字标签 (EOF) 无缩进

相关内容

  • 没有找到相关文章

最新更新