我想为部署创建自动化,js / css是用前缀生成的,并且我想将它们导入标记之间的php文件中
预期产量
...
/*bashStart*/
drupal_add_css(drupal_get_path("module","myModule")."/styles/c91c6d11.main.css");
drupal_add_js(drupal_get_path("module","myModule")."/scripts/j91c6d11.main.js");
/*bashEnd*/
...
我用awk到目前为止已经把我带到这里了,但是我有一个问题,它正在生成
...
/*bashStart*/
drupal_add_css(drupal_get_path("module","myModule")."/styles/c91c6d11.main.css
");
drupal_add_js(drupal_get_path("module","myModule")."/scripts/j91c6d11.main.js
");
/*bashEnd*/
...
这是awk脚本:
awk 'BEGIN {p=1}/Start/{print;printf("drupal_add_css(drupal_get_path(\"module\",\"myModule\").\"/styles/");system("ls styles");printf("\");\n");printf("drupal_add_js(drupal_get_path(\"module\",\"myModule\").\"/scripts/");system("ls scripts");printf("\");\n");p=0}/Finish/{p=1} p' myModule.module > tmp;
在awk中使用ls不太好-我认为您可以完全在shell中执行此操作:
#!/bin/bash
p=1
while read -r line; do
[[ $line = '/*bashEnd*/' ]] && p=1
(( p )) && echo "$line"
if [[ $line = '/*bashStart*/' ]]; then
p=0
for style in styles/*; do
echo 'drupal_add_css(drupal_get_path("module","myModule")."/styles/'"$style"'");'
done
for script in scripts/*; do
echo 'drupal_add_js(drupal_get_path("module","myModule")."/scripts/'"$script"'");'
done
fi
done < file.php > output.php
循环遍历输入文件,直到到达“ bashStart”行,然后添加所需的行。输出到一个文件output.php
,您可以在覆盖原始文件之前检查该文件。如果您有信心,可以添加&& mv output.php file.php
到该done
行中,以覆盖原始文件。
该标志p
控制要打印的行。当到达“ bashStart”行时将其设置为0,而当到达bashEnd行时将其设置为1,因此将替换两者之间的行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句