如果 SSH 内条件失败

如果 SSH 内条件失败

我通过 ssh 连接到远程计算机(ubuntu)并尝试在其中执行一个小脚本。该脚本如下所示:

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

它通过 SSH 连接到服务器但打印为空

输出:TotalCount 为

我试图转义变量(TotalCount=\$count),因为它在远程主机上运行。但没有成功

答案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另一方面,该变量是在本地定义的,因此您不想转义它。

相关内容