我需要从bash中设置JavaScript变量的值。变量存在于index.html文件中,我想使用unix SED命令来实现这一点。在index.html我有它湖这个:
<script>
/*bash_var*/ var foo = 1; /*end_bash_var*/
</script>
我试着这样做:
sed -i -e 's%/*bash_var*/(.*)/*end_bash_var*//'"$ var foo = 0; /g" index.html
以及这个命令的一些变体,但我总是会遇到一些错误。
谢谢你的帮助。
更新
预期输出:
<script>
/*bash_var*/ var foo = 0; /*end_bash_var*/
</script>
您需要逃离*
。此外,您的'
是错误的,不需要%
。
sed 's#(/*bash_var*/).*(/*end_bash_var*/)#1 var foo = 0; 2#'
请注意,我使用#
作为分隔符,而不是/
。通过这种方式,我可以在表达式中使用/
,而无需对其进行转义。这使得sed
命令的可读性提高了一点。然而,这仍然是乏味的。你能把你的index.htm
改写成这样吗?
<script>
//BASHVAR
var foo = 1;
</script>
然后你可以使用
sed '/BASHVAR/{n; s/.*/var foo = 0;/;}'
sed 's#(/*bash_var*/ *var foo = ).*(; */*end_bash_var*/)#102#'
如果是,则此上下文中foo的值