0

场景:我正在尝试一个小型的 shell 脚本程序。

在这个程序中 - 我试图用 2 个表查询一个数据库。并试图得到一个是或否的答案。

etag = md5sum我使用 python 脚本从文件中获取的那个。

echo 'select a.hash,b.hashuser, case when a.hash=b.hashuser then "No!" else "yes!" end from tempo b, hashes a where a.hash=b.hashuser and b.hashuser='$etag''

当我尝试在我的屏幕上打印它时,它清楚地显示 etag 作为 md5sum

但是,如果我尝试在我的数据库上查询它并尝试获取结果。使用下面给出的脚本

sqlite3 hashez.db 'select a.hash,b.hashuser, case when a.hash=b.hashuser then "No!" else "yes!" end from tempo b, hashes a where a.hash=b.hashuser and b.hashuser='$etag''

这是我得到的错误。

 Error: unrecognized token: "579f0b61cf958a0eea2f60906e6a04a4"

谷歌搜索了一下,这是我从这个链接找到的解决方案

然后我把它改成${#etag}

echo 'select a.hash,b.hashuser, case when a.hash=b.hashuser then "No!" else "yes!" end from tempo b, hashes a where a.hash=b.hashuser and b.hashuser='${#etag}''

我现在得到的错误是

select a.hash,b.hashuser, case when a.hash=b.hashuser then "No!" else "yes!" end from tempo b, hashes a where a.hash=b.hashuser and **b.hashuser=32**

为什么 b.hashuser=32。是我的第一个问题。

第二个问题:

当我尝试使用上述函数查询数据库时:

sqlite3 hashez.db 'select a.hash,b.hashuser, case when a.hash=b.hashuser then "No!" else "yes!" end from tempo b, hashes a where a.hash=b.hashuser and b.hashuser='${#etag}''

我没有得到回复。

  • 我的查询是否错误。, 如果是,为什么我直接在数据库上查询时得到答案?

对不起,我的英语不好

4

1 回答 1

1

你在胡说八道。

somecmd 'SELECT ... "'"$etag"'", ...'

注意单引号内的双引号,以及参数替换周围。

于 2012-07-13T21:03:32.863 回答