我正在使用--qf
flag查询 rpm 数据库
rpm -q --qf '<prm><N>%{N}</N></rpm>' --all
这在本地工作正常,现在当我尝试ssh
时
ssh -l root ${host} rpm -q --qf '<prm><N>%{N}</N></rpm>' --all
我明白了
bash: -c: line 0: syntax error near unexpected token '<'
bash: -c: line 0: `rpm -q --qf <prm><N>%{N}</N></rpm> --all'
注意
- 第二行有一个反引号和一个前引号,
- 使用双引号给出同样的错误,
- 实际使用使用
%{N}
,,%{V}
...%{INSTALLTIME:date}
我遗漏了一些明显的东西,但是什么?
答案1
您需要添加额外的引用级别:
ssh -l root ${host} "rpm -q --qf '<prm><N>%{N}</N></rpm>' --all"
如果没有额外的双引号,则给远程 shell 的命令为
rpm -q --qf <prm><N>%{N}</N></rpm> --all
以及 shell 的解释<
等等。
错误消息中的反引号和单引号是实际的引号,用于引用命令。它们不是给予 shell 的命令的一部分。