Escaping von Anführungszeichen bei der Verwendung von SSH
Ich versuche zu bauen, ein einfaches deployment-Skript für meine PHP-Anwendungen. Ich weiß, es gibt mehrere Werkzeuge, die für diesen job (Capistrano, Phing, etc.) aber Sie scheint wie eine Menge Arbeit für meine einfache Bereitstellung routine.
Benutze ich sshpass, damit Sie mein Passwort immer und immer wieder. Aber nach dem hochladen meines komprimierte installer, muss ich ssh in den server, und führen Sie einige Befehle. Eine davon ist die sed. Also, Zitate sind, bricht mein Skript. Es ist so etwas wie dieses:
sshpass -p foo ssh user@host" cd /www/htdocs/foo/bar echo 'Auspacken und entfernen installer" tar -zxf install.tar.gz sed "s/define('UMWELT', 'development');/define('UMWELT', 'Produktion');" index.php > tmp && mv tmp index.php sed "s/define('UMWELT', 'development');/define('UMWELT', 'Produktion');/" admin/index.php > tmp && mv tmp admin/index.php "
Wie Sie sehen können, verwenden Sie doppelte Anführungszeichen, um zu beginnen, meine SSH-Aussagen, aber ich muss auch auf sed.
Anregungen würde sehr geschätzt werden. Danke!
InformationsquelleAutor fedeisas | 2011-07-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Flucht der internen Anführungszeichen ist der normale Weg. Funktioniert das nicht?
InformationsquelleAutor Flimzy
Kann ein hier-Dokument stattdessen verwendet werden?:
<<"DATA"
wenn Sie nicht möchten, variable expansion innerhalb des hier-DokumentsDas funktioniert, wirft aber eine Warnung: Pseudo-terminal wird nicht vergeben werden, weil die Standardeingabe ist kein terminal.
InformationsquelleAutor wallyk