命令替换:找不到文件或命令

命令替换:找不到文件或命令

以下脚本

#!/bin/bash
QUERY='select * from cdr;'
MYROWS=$("sqlite3 -list -nullvalue NULL -separator ',' /var/log/asterisk/master.db '${QUERY}'")

给我

./bla.sh: row 35: sqlite3 -list -nullvalue NULL -separator ',' /var/log/asterisk/master.db 'select * from cdr;': file or directory not found

如果我直接执行

sqlite3 -list -nullvalue NULL -separator ',' /var/log/asterisk/master.db 'select * from cdr;'

然后就可以了。我猜想引号中有一些错误,在错误消息中看不到。请注意,我需要单引号

select * from cdr;

感谢您对我做错了什么的任何提示!

答案1

里面$(…)是一个具有通常语法的 shell 命令。您打算作为命令的整个片段周围的双引号使其被解析为单个单词,这是命令的第一个单词,因此它被解释为命令名称。

此外,您的引用$QUERY不正确:您需要在其周围加上双引号,以便扩展变量。

MYROWS=$(sqlite3 -list -nullvalue NULL -separator ',' /var/log/asterisk/master.db "${QUERY}")

相关内容