我需要从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>
答案 0 :(得分:1)
你需要逃避*
。此外,您的'
错误,并且不需要%
。
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;/;}'
答案 1 :(得分:1)
sed 's#\(/\*bash_var\*/ *var foo = \).*\(; */\*end_bash_var\*/\)#\10\2#'
如果只是此上下文中foo的值