我正在尝试在bash脚本中检查某个包是否安装在远程计算机上。
如果我在计算机本身上执行以下语句,则结果在文件check.txt中为1(已安装),这是正确的:

dpkg-query -W -f='${Status}' nano 2>/dev/null | grep -c "ok installed" > /home/someuser/check.txt

但是,如果我在SSH会话中执行相同的命令,结果总是0。
有人能解释一下为什么以及如何纠正吗?
谢谢您。
#!/bin/bash
ADDRESS=SOMEUSER@$SOMESERVER

function run {
    ssh $ADDRESS /bin/bash $@
}

run << SSHCONNECTION

dpkg-query -W -f='${Status}' nano 2>/dev/null | grep -c "ok installed" > /home/someuser/check.txt

SSHCONNECTION

最佳答案

您需要转义$字符:

dpkg-query -W -f='\${Status}' nano 2>/dev/null | grep -c "ok installed" > /home/someuser/check.txt

关于linux - 检查是否在SSH session 中安装了软件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40754333/

10-15 13:41