javascript - Bash 脚本没有将 Javascript 命令保留到 EOF
问题描述
我正在尝试使用 bash 脚本在 bash 脚本中生成一个文件EOF
。该文件正在正确生成,但是我在其中定义变量的一段 javascript 代码被遗漏了并且代码错误:
Javascript/Bash 代码片段
cat << EOF > map.php
$( "#slider" ).slider({
value:60,
min: 1.0,
max: 100.0,
animate: true,
animate: 500,
slide: function( event, ui ) {
historicalOverlay.setOpacity( ui.value/100 );
}
});
EOF
结果
.slider({
value:60,
min: 1.0,
max: 100.0,
animate: true,
animate: 500,
slide: function( event, ui ) {
historicalOverlay.setOpacity( ui.value/100 );
}
});
解决方案
here-document的所有行都经过参数扩展、命令替换和算术扩展。
该序列$( "#slider" )
是命令替换。shell 运行#slider
(这是一个无操作,因为它代表一个注释)并将序列替换为命令的输出(无输出)。
如果您希望您的脚本逐字输出 JS 的片段,您可以将 here-document 的分隔符放在单引号中:
cat << 'EOF' > map.php
$("#slider").slider({
value:60,
min: 1.0,
max: 100.0,
animate: true,
animate: 500,
slide: function( event, ui ) {
historicalOverlay.setOpacity( ui.value/100 );
}
});
EOF
这告诉 shell 不要在文本中扩展任何特殊序列。
如果 JS 代码包含需要替换的部分(参数、命令等),您可以让分隔符不加引号,并注意转义任何标记扩展或替换的字符。
应用于上面的代码,这会导致:
cat << EOF > map.php
\$("#slider").slider({
value:60,
min: 1.0,
max: 100.0,
animate: true,
animate: 500,
slide: function( event, ui ) {
historicalOverlay.setOpacity( ui.value/100 );
}
});
EOF
推荐阅读
- c# - 语言相关的排序不适用于所有机器
- sql - Hibernate + SQL Server: One Transaction blocks all other transactions
- javascript - 如何在状态 Vuex/Vue/Nuxt 中添加新的属性对象
- setuptools - python 3.7.6 pip setup.py 测试与 ContextualVersionConflict
- elasticsearch - 流利的位:Logstash_Prefix_Key 无法使用“es”输出插件按预期工作
- javascript - 在应用程序的服务器端执行 JavaScript 客户端编写的代码
- azure - Azure DevOps ASP.NET Web API 无法下载 zip YAML 问题
- replace - 在 Install4j 中隐藏文件和文件夹并替换安装程序变量操作相关查询
- reactjs - 如何在 ag-Grid 中获取选择顺序?
- javascript - Vuejs 博客文章标签过滤器