1

我正在使用 Azure App Service Kudu Shell 创建一个名为 applicationHost.xdt 的文件。由于我无法上传文件,我使用以下链式 shell 命令来生成它:

echo "<?xml version=\"1.0\"?>" > applicationHost.xdt && echo "<configuration xmlns:xdt=\"http://schemas.microsoft.com/XML-Document-Transform\"> " >> applicationHost.xdt && echo "  <system.webServer>" >> applicationHost.xdt && echo "    <runtime xdt:Transform=\"InsertIfMissing\">" >> applicationHost.xdt && echo "      <environmentVariables xdt:Transform=\"InsertIfMissing\">" >> applicationHost.xdt && echo "        <add name=\"FOO\" value=\"BAR\" xdt:Locator=\"Match(name)\" xdt:Transform=\"InsertIfMissing\" />" >> applicationHost.xdt && echo "        <add name=\"PATH\" value=\"%PATH%;%HOME%\BAR\" xdt:Locator=\"Match(name)\" xdt:Transform=\"InsertIfMissing\" />" >> applicationHost.xdt && echo "      </environmentVariables>" >> applicationHost.xdt && echo "    </runtime>" >> applicationHost.xdt && echo "  </system.webServer>" >> applicationHost.xdt && echo "</configuration>" >> applicationHost.xdt

本质上,只需使用 echo 命令逐行编写文件。这在 bash 和 zsh 本地都可以正常工作。

运行后

echo "${BASH_VERSION}"

在终端上,我得到响应“4.4.12(1)-release”。我不确定版本是否不正确。我从 shell 得到的错误消息(运行完整命令时)是:

version="1.0"?> > applicationHost.xdt && echo <configuration: ?xml: No such file or directory

当我尝试运行命令的第一部分(echo "" > applicationHost.xdt)时,我收到以下消息:

version="1.0"?> > applicationHost.xdt && echo '' && pwd: ?xml: No such file or directory

我认为这与引号/程序无法识别转义字符有关,但除此之外我不确定。

4

2 回答 2

0

似乎使用单引号解决了这个问题:

echo '<?xml version=\"1.0\"?>' > applicationHost.xdt

我不知道为什么会这样,因为 shell 似乎是 bash 或 Bourne sh。

于 2021-07-25T15:09:23.433 回答
0

与您的实际问题并不真正相关(我怀疑这是由于您无法控制的事情,或者由于您没有在问题中显示的事情),但是创建此文件的更简单方法是使用此处的文档:

cat <<'EOF' > applicationHost.xdt
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <system.webServer>
    <runtime xdt:Transform="InsertIfMissing">
      <environmentVariables xdt:Transform="InsertIfMissing">
        <add name="FOO" value="BAR" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />
        <add name="PATH" value="%PATH%;%HOME%\BAR" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />
      </environmentVariables>
    </runtime>
  </system.webServer>
</configuration>
EOF

(随着引用的变化,它可能会偶然解决您的问题。)

于 2021-07-25T15:51:07.773 回答