gpt4 book ai didi

javascript - Bash 脚本不将 Javascript 命令保留为 EOF

转载 作者:行者123 更新时间:2023-11-28 17:09:25 24 4
gpt4 key购买 nike

我正在尝试使用 EOF 在 bash 脚本中生成文件。该文件已正确生成,但是我定义变量的一段 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片段,你可以将这里文档的分隔符放在单引号中:

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

关于javascript - Bash 脚本不将 Javascript 命令保留为 EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54867401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com