$backupoption = ' | grep -vP "^USE \`' . $backup_db . '\`;$"' ;
Warum ein Verkettungsoperator zwischen 2 Strings?
Oh. Dann hast Du aber den Zeilenumbruch im resultierenden String …
| grep -vP
"^USE \`db0815\`;$"
… den Du als Teil eines Befehls an die Shell „verfüttern“ willst.
In der Shell oder Bash endet nun aber ein Befehl entweder am ;
oder am Zeilenumbruch … Das ist zwar syntaktisch korrekt - nur gerade nicht das, was Du willst.
By the way:
… \` …
Update: Alles zurück. Hier wird ein Name für SQL, Geschmacksrichtung MySQL erzeugt, der Backtick soll von der Shell aber nicht angefasst werden. Das ist also richtig.