在 shell 调用中转义单引号

Escape single quotes in shell invocation

我试图在不使用外部脚本的情况下编写 systemd 服务文件。

我需要查询 sqlite 数据库并将内容写入文件。但是我的查询使用双引号,我需要用单引号将查询括起来,因为 systemd 不使用 shell,我需要手动使用一个。那么我该如何实现呢?

ExecStart=sh -c 'sqlite3 dbfile.db 'SELECT "The db value is: "||value FROM table' > output.log'

我试过转义内部单引号,但由于某些原因不起作用。

试试这个:

ExecStart=sh -c 'sqlite3 dbfile.db '\''SELECT "The db value is: "||value FROM table'\'' > output.log'

我曾经使用 mysql,双引号也可以。你也可以试一试:

ExecStart=sh -c 'sqlite3 dbfile.db "SELECT \"The db value is: \"||value FROM table" > output.log'