我有以下命令不起作用:
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
?
提前感谢您的帮助。
答案 0 :(得分:1)
您必须在查询周围使用双引号,以允许:accessibilityTraversalBefore
识别变量。这意味着您必须正确地转义属于SQL语句的双引号:
bash