当我尝试在if loop下访问远程服务器上的导出变量时,下面不起作用:
VAR=`grep pattern ./checklist | cut -f7`
echo "Port number to be checked for service is $VAR" #working fine
export VAR
ssh -tTq user@node <<EOF
echo "checking service on \`hostname\`";
echo "export value received is $VAR"
echo \$(ps -ef | grep -v grep | grep port=$VAR | wc -l)
if [ \$(ps -ef | grep -v grep | grep port=$VAR | wc -l) == 0 ];
then
echo "service is DOWN"
elif [ \$(ps -ef | grep -v grep | grep port=\$VAR | wc -l) == 1 ];
then
echo "Service is Up"
else
echo "Multiple instances running of selected service"
fi
EOF
if循环收到的输出不符合预期:
运行所选服务的多个实例 +'['1 == 2']'
而不是1 == 1条件匹配
答案 0 :(得分:0)
自己找到答案。 在上面的问题中,我在错误的elif条件下错过了$ VAR。
LL:强/单引号&#39;当通过ssh使用导出变量时,应该避免在远程主机上执行cmds。
在调用&lt;&lt;之间存在的导出变量时,避免使用\ on under EOF ..... EOF。 (在上面的示例中为$ VAR)