如何在 IF 条件下使用 ssh 将文件与某些模式与 Bash 脚本进行比较

How to use ssh in IF condition for compare files with some Pattern with Bash script

我发现 ssh 的用法与 ssh“cmd”类似,但当我需要从一台机器上 运行 生成文件时将文件模式创建到另一台机器时无法在脚本中实现它。

#!/bin/bash
VENUE=TE
Date=$(date +%Y%m%d)
SCRIPT_PATH=$PWD
TRC_PATH=$DSS_TRC
PATTERN_PATH=${SCRIPT_PATH}/Patterns

COUNTER=0
echo "$(tput setaf 5)Test 10. GTPTE instance check$(tput sgr0)"
echo "Checking GTP${VENUE} instance"

while read PATTERN
do
        INSTANCE=GTP${VENUE}
        if [ ssh host@name "cat ${TRC_PATH}/${INSTANCE}*_${Date}*.trc |  grep "$PATTERN" | wc -l"  -ge 1 ]
                then
                ((COUNTER=${COUNTER}+1))

                else
                        echo "Test 1 : $(tput setaf 1)[FAILED]$(tput sgr0). Pattern : $PATTERN not found"
                        exit 0
        fi
done < ${SCRIPT_PATH}/Patterns/10_TEST.ptrn
echo "Test 10 : $(tput setaf 2)[PASSED]$(tput sgr0). Number of patterns checked : ${COUNTER}"

错误:[:参数过多。

首先,在这种情况下,请尝试查看您的 ssh 命令返回的值是什么。所以把ssh的结果赋值给一个变量,有疑问的回显,或者用bash -x.

观察

在这种情况下,您的变量将是“ssh host@name...”

您需要执行命令并获取结果。为此,请将整个命令包含在 $(yourcommand yourparameters) 中。然后你会发现你需要修复另一个东西 - 它实际上是 name@host.

经过这一切,它应该会起作用,或者在清单上会让您走得更远。