评估和shell脚本分配SSH会话内变量

问题描述:

我想增加一个SSH session.but没有命令正在内部INDX和eindx值..评估和shell脚本分配SSH会话内变量

#!/bin/bash 
hosts=(#10.xx.xx.xx) 
PdidPrefix1=$1 
Runtime=$2 
indx=$3 
eindx=`expr $indx + $4` 
logfilename=$5 
for i in "${hosts[@]}" 
do 
echo $i 
ssh [email protected]$i << EOF 
for var in {1..4} 
do 
indx=`expr $eindx + 1` // not working 
eindx=$((indx+eindx)) // not working 
done 
EOF 
done 
exit 

使用让还

尝试

让“indx = indx + 1”//不工作

请提出处理变量的最佳方法。

+0

您是否试过引用heredoc sigil(例如''EOF'')来防止本地主机上的变量扩展? –

+0

@ DavidC.Rankin..Tried'EOF'出错。 – SuryaVeepuri

+0

引用sigil可防止* pathname *和* variable *扩展。这是防止两者的标准方式。看来你遇到的问题是你想在本地展开变量,然后结果通过ssh传递给'$ i'处的主机。虽然不是原因,但使用'$((...))'算术是正确的,在过去留下'expr a + b'。你是否在所有你正在进行数学计算的情况下都用'$((...))'算术进行尝试? –

#!/bin/bash 
hosts=(xx.10.20.30) 
PdidPrefix1=$1 
Runtime=$2 
indx=$3 
eindx=`expr $indx + $4` 
logfilename=$5 
for i in "${hosts[@]}" 
do 
echo $i 
ssh [email protected]$i "bash -s -- '$indx' '$eindx'" <<\EOF 

echo "In remote shell with parameters $1 $2..." 
indx=$1 
eindx=$2 

for ((var=1; var<=4; var++)) 
do 

indx=`expr $eindx + 1` 
eindx=$((indx+eindx)) 
echo "var=" $var " indx=" $indx " eindx=" $eindx 
done 
EOF 
done 
exit 
+0

没有Luck.If我使用\ EOF,内循环变量'var'没有得到解决。如果我删除并尝试运行,我可以看到在调试中,expr $ eindx + 1正在执行,但没有得到分配给indx变量。 – SuryaVeepuri

+0

我的坏..bro ..它的工作...我复制了代码段的一部分,并试图..谢谢... – SuryaVeepuri

我已经运行了相同的脚本。它显示出适当的价值。