我运行代码
user@host:~$ mysql -h mysql-server -uuser -ppassword scans -N -B -e
'SELECT scan_id, count(*) FROM scan_info NATURAL JOIN found_results
WHERE fp_id = "1669" AND timestamp >= "2016-08-31"
ORDER BY scan_id LIMIT 1'
结果是
52169471 9
然而,当我通过bash -c
运行时,我得到了
user@host:~$ bash -c "mysql -h mysql-server -uuser -ppassword scans -N -B -e
'SELECT scan_id, count(*) FROM scan_info NATURAL JOIN found_results
WHERE fp_id = "1669" AND timestamp >= "2016-08-31"
ORDER BY scan_id LIMIT 1'"
我得到了不同的结果:
51278887 23
任何想法为什么?
答案 0 :(得分:1)
如果以上命令有三个引用级别。这将导致内部双引号出现问题。这是bash实际执行的命令:
result = left_outer_joins(:caracteristiquetests, :situations).where('nomdep LIKE ? OR name LIKE ? OR nomregion LIKE ?', "%#{query}%", "%#{query}%", "%#{query}%")
result = result.where('handicap LIKE ?', "%#{handicap}%") if handicap
result = result.where('animaux LIKE ?', "%#{animaux}%") if animaux
result = result.where('television LIKE ?', "%#{television}%") if television
result = result.where('plage LIKE ?', "%#{plage}%") if plage
result = result.where('etang LIKE ?', "%#{etang}%") if etange
result = result.where('lac LIKE ?', "%#{lac}%") if lac
return result
正如您所看到的,内部双引号已经消失。您可以通过转义内部双引号来解决这个问题:
mysql -h mysql-server -uuser -ppassword scans -N -B -e 'SELECT scan_id, count(*) FROM scan_info NATURAL JOIN found_results WHERE fp_id = 1669 AND timestamp >= 2016-08-31 ORDER BY scan_id LIMIT 1'