如何让 EOT 处理 bash 中的 IF ELSE 语句?

How do I get EOT to work on IF ELSE statement in bash?

我正在尝试制作一个脚本,如果 /etc/environment 文件当前为空,则启用代理设置,如果文件有文本,则禁用设置。我写了一些代码,但不确定为什么 /etc/environment 文件没有被编辑。我已经删除了我正在使用的实际代理。 任何帮助将不胜感激!

#!/bin/bash

        if [ -s /etc/environment ]
        then
            cat<<EOT >> /etc/environment
            http_proxy="blank"
            https_proxy="blank"
            ftp_proxy="blank"
            export http_proxy https_proxy ftp_proxy
            EOT
        else
            > /etc/environment
        fi

如果要缩进结束标记 EOT 或将 EOT 移动到第一列,请使用 <<- 而不是 <<

请看:http://www.shellcheck.net/

您也可以将此处的文档移动到 if 语句本身。

if [ -s /etc/environment ]; then
  cat
fi <<EOT >> /etc/environment
http_proxy="blank"
https_proxy="blank"
ftp_proxy="blank"
export http_proxy https_proxy ftp_proxy
EOT

虽然 if 语句 本身 是缩进的,但您仍然想知道如何缩进此处文档,正如 Cyrus 所解释的那样。