sqlite3 ssh 命令遇到问题(我假设引号错误)

sqlite3 ssh 命令遇到问题(我假设引号错误)

以下效果很好:

ssh plxch1035.pdx.xxxxxx.com "sqlite3 /p/hdk/rtl/proj_data/shdk74/fe_data/ipci/ipci.db 'select * from tools'"

当我想要一个特定的工具行时:

ssh plxch1035.pdx.xxxxxx.com "sqlite3 /p/hdk/rtl/proj_data/shdk74/fe_data/ipci/ipci.db 'select * from tools where name='bscan''"

错误是

SQL error: no such column: bscan

我已确认列名 has 的存在bscan

我假设我的引号被搞乱了,我什至尝试转义周围的单引号bscan(使用 ''')

答案1

OT1Hssh不要求远程命令行是单个参数; OTOH 通过本地 shell(到 ssh)获取报价远程 shell(到 sqlite3)很困难,但是 sqlite3 在 stdin 上接受 SQL 命令(带有 ;)而不是作为参数,这更容易,因为 ssh 通常透明地通过 stdin(以及 stdout 和 stderr):

 echo "select * from tools where name='bscan';" | ssh [user@]host sqlite3 db

或者如果您的 shell 支持这里字符串(bash、ksh、zsh):

 ssh [user@]host sqlite3 db <<<"select * from tools where name='bscan';"

相关内容