如何解决无法通过 Bash 创建文件
我正在使用 Azure 应用服务 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
我认为这与引号/程序无法识别转义字符有关,但除此之外我不确定。
解决方法
看来使用单引号可以解决问题:
echo '<?xml version=\"1.0\"?>' > applicationHost.xdt
我不知道为什么会这样,因为 shell 似乎是 bash 或 Bourne sh。
,与您的实际问题并不真正相关(我怀疑这是由于您无法控制的问题,或者由于您没有在问题中显示的问题),但是创建此文件的更简单方法是使用 here文档:
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
(随着引用的变化,它可能顺便解决您的问题。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。