在sqlite3 string命令中传递Bash参数

时间:2018-03-14 17:26:41

标签: bash sqlite parameter-passing

我有以下命令不起作用:

sqlite3 my_db.sqlite "SELECT name FROM sqlite_master WHERE type = 'table';" | for i in $(cat) ; do sqlite3 my_db.sqlite 'SELECT * FROM "${i}"'; done

快速解释一下:下面的第一部分应该从我拥有的sqlite文件中检索表名:

sqlite3 my_db.sqlite "SELECT name FROM sqlite_master WHERE type = 'table';"

这部分应该在stdout中递归显示每个表的全部内容:

for i in $(cat) ; do sqlite3 my_db.sqlite 'SELECT * FROM "${i}"'; done

问题是我不知道我应该如何将i传递给sqlite命令。我尝试使用"${i}"但显然它被解释为经典字符串以查找匹配的表名,然后返回Error: no such table: ${i}

我应该如何通过i

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您必须在查询周围使用双引号,以允许:accessibilityTraversalBefore识别变量。这意味着您必须正确地转义属于SQL语句的双引号:

bash
相关问题