если условие не выполняется внутри SSH

awk '
    function p(n,A){
        s = n
        for(i=2;i<=NF;i++){
            s = s "\t" A[i]
            A[i] = $i
        }
        if(n)
            print s
    }
    NR==1{
        print
        next
    }
    $1==n{
        for(i=2;i<=NR;i++)
            A[i] = A[i] ";" $i
        next
    }
    {
        p(n,A)
        n = $1
    }
    END{
        p(n,A)
    }
    ' file
0
25.03.2019, 23:10
1 ответ

Решение

Попробуйте вместо этого:

myfunction()
{
  input=$1
  count=$2
    ssh user@host <<EOF
    if [ $input = "comment" ];then
      TotalCount=$count
      echo "TotalCount is \$TotalCount"
    else
      echo "do something"
    fi    
EOF
}
myfunction comment 2

Обратите внимание, что я добавил обратную косую черту к \$TotalCount, чтобы предотвратить локальное расширение.

Пояснение

Вы хотите экранировать переменную TotalCount, потому что эта переменная определяется удаленно. Если $TotalCountоценивается локально, то, вероятно, ()будет получена пустая строка, что объясняет, почему вы не видите никакого вывода. С другой стороны, переменная countопределяется локально, поэтому вам не нужно ее избегать.

3
28.01.2020, 02:22

Теги

Похожие вопросы