以下脚本
#!/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}")