【发布时间】:2018-03-20 07:26:30
【问题描述】:
我正在尝试在 ssh 会话中增加 indx 和 eindx 值。但没有任何命令起作用..
#!/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 centos@$i << EOF
for var in {1..4}
do
indx=`expr $eindx + 1` // not working
eindx=$((indx+eindx)) // not working
done
EOF
done
exit
也尝试过使用 let
let "indx=indx+1" //不工作
请提出处理变量的最佳方法。
【问题讨论】:
-
您是否尝试过引用heredoc sigil(例如
'EOF')来防止本地主机上的变量扩展? -
@DavidC.Rankin..Tried 'EOF' 出错。
-
引用印记可以防止 pathname 和 variable 扩展。这是防止两者的标准方法。看来您遇到的问题是您希望在本地扩展变量,然后结果通过 ssh 传递到
$i的主机。虽然不是原因,但使用$((...))算术是正确的,将expr a + b留在过去。您是否在所有进行数学运算的情况下都尝试过$((...))算术? -
@DavidC.Rankin 使用了 $((..)) 表达式,但是它不起作用。如果我使用
EOF,它会抛出一个错误,它无法解析我的 $var m 试图在另一个命令中使用