Намерение заключается в том, чтобы вставить сразу после кода тега HEAD
Google на устаревший веб-сайт HTML.
#!/bin/bash
find . -type f -iname "*.php" -or -iname "*.htm" -or -iname "*.html" | while read i; do
echo "Processing: $i"
sed -i 's*<HEAD>*&\
<!-- Global site tag (gtag.js) - Google Analytics -->\
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-1234567-2"></script>\
<script>\
window.dataLayer = window.dataLayer || [];\
function gtag(){dataLayer.push(arguments);}\
gtag('js', new Date());\
\
gtag('config', 'UA-1234567-2');\
</script>*' "$i"
done
Выше приведен код тега Google, где он должен, но без одинарных кавычек:
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-1234567-2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag(js, new Date());
gtag(config, UA-1234567-2);
Одинарные кавычки отсутствуют после его обработки:
# diff actual_google_tag_code processed
6c6
< gtag('js', new Date());
---
> gtag(js, new Date());
8,9c8
< gtag('config', 'UA-1234567-2');
< </script>
---
> gtag(config, UA-1234567-2);
Если я заменяю '
на \'
, я получаю сообщение об ошибке:
line 13: syntax error near unexpected token `('
line 13: ` gtag(\'js\', new Date());\'
Поскольку я использую \
для продолжения каждой строки, я не был уверен, что обратная косая черта, чтобы избежать одиночной кавычки, сработает, но я решил попробовать.
Как я могу сохранить эти одинарные кавычки в коде тега Google?