【发布时间】:2018-03-30 19:53:54
【问题描述】:
我想使用 Perl 在文件的每一行上运行 shell 命令。该文件包含包名称,例如firefox。
这是对单个包名的调用;它有效:
dpkg-query -W -f='${binary:Package}_${Version}' firefox
如果我像这样从单行“文件”进行管道传输,它将不再起作用:
echo firefox | perl -ne \
'print `dpkg-query -W -f="${binary:Package}_${Version}" $_` . "\n"'
输出为_\n。那么在这些嵌套引号中转义这些美元的正确方法是什么,以便 dpkg-query 接收逐字字符串 ${binary:Package}_${Version} 而没有 shell 或 bash 将它们解释为“他们的”变量?我尝试了各种排列,但到目前为止无济于事。输出格式应为firefox_59.0.2+build1-0ubuntu0.16.04.1\n。
【问题讨论】: