我正在尝试检查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
答案 0 :(得分:1)
您需要转义$
字符:
dpkg-query -W -f='\${Status}' nano 2>/dev/null | grep -c "ok installed" > /home/someuser/check.txt