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