【问题标题】:How do I get EOT to work on IF ELSE statement in bash? [duplicate]如何让 EOT 在 bash 中处理 IF ELSE 语句? [复制]
【发布时间】:2017-01-14 06:06:15
【问题描述】:

我正在尝试制作一个脚本,如果 /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

【问题讨论】:

    标签: bash proxy environment-variables eof heredoc


    【解决方案1】:

    如果您想缩进结束标记EOT 或将EOT 移动到第一列,请使用&lt;&lt;- 而不是&lt;&lt;

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

    【讨论】:

      【解决方案2】:

      您还可以将此处的文档移动到 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 解释的那样。

      【讨论】:

        猜你喜欢
        • 2015-07-03
        • 1970-01-01
        • 1970-01-01
        • 2014-12-20
        • 2013-06-16
        • 2017-08-10
        • 2018-06-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多