我想检查来自远程服务器的特定线路。到目前为止,我可以检查文件是否存在。但是我可以使用像 jq 这样的工具来索引特定的行吗?
if ssh -q -i $pathToPem $sshUsernameIp [ -f ${remote_serial} ];
then
echo "Serial number is found externally"
serialNumber=$(cat serialNumber.json | jq '.serialNumber')
if ssh -q -i $pathToPem $sshUsernameIp [ "$serialNumber" == "${remote_serial | jq '.serialNumber'}" ];
then
echo "Serial number is same"
else
echo "Serial number is not same"
fi
fi
输出>
Serial number is found externally
./test.sh: line 127: ${remote_serial | jq '.serialNumber'}: bad substitution
我怎样才能在 {} 那里传递变量?我可以在没有 scp 的情况下比较这些本地和远程文件吗?
没必要把它弄复杂。只需从远程主机获取 JSON 并将其传递
jq
,然后在本地执行相同操作。然后比较。如果远程文件丢失,你会得到一个错误(我们可以扔掉),并且序列号会比较不同(除非本地序列号也丢失)。这是假设这
$remote_serial
是远程机器上 JSON 文档的路径名。还要注意在调用中对变量扩展的引用
ssh
。您得到的实际错误来自以下事实
不是有效的变量扩展。您可能想使用类似的东西
但这假设它
$remote_serial
包含 JSON 文档的内容。看起来应该是
代替