Hallo Raketenwilli,
noch billiger und schneller wäre vermutlich
$backupoption = <<<END | grep -vP "^USE \`$backup_db\`;$"'; END;
Das ist ein heredoc String, da kann man " und ' nach Herzenslust und ohne Escaping hineindonnern. Und Variablen auch noch.
Ja. Aber …
Wenn man jetzt auf die Idee kommt, dass $backup_db
oder eine andere Variable mit einer Funktion „escape_fuzzi“ behandelt werden müsse, sieht der Zusammenbau dann mit der von mir vorgestellten Methode so aus:
Der Änderungskandidat
$backupoption = ' | grep -vP '
. '"^USE \`'
. $backup_db
. '\`;$"'
;
wird ganz einfach eben mal zu:
$backupoption = ' | grep -vP '
. '"^USE \`'
. escape_fuzzi( $backup_db )
. '\`;$"'
;
… und auf Performance kommt es vorliegend sehr viel weniger an als auf schnelle Editierbarkeit - also Synapsenschonung und, damit verbunden, Programmierfehlerverknappung.
„Perfektioniert“ wäre es:
$backupoption = ' | grep -vP '
. escapeshellarg(
'^USE \`'
. $backup_db
. '\`;$'
)
;
Resultat mit $backup_db='db0815';
ist:
| grep -vP '^USE \`db0815\`;$'
Wobei das escapeshellarg() im konkreten, speziellen Fall als „notlos“ erscheint.