bash:变量增量没有发生

bash:变量增量没有发生

我的一个 bash shell 脚本出了问题。我问过几个同事,但他们都摇头(挠头之后),所以我来这里寻求答案。

根据我的理解,每次运行循环后它都必须创建新文件,如果我的

莱特莱特2

变量在增加,或者我的脚本中存在一些位置问题,但我的两个变量在执行每一行后都没有获得新值,而是取旧值并使文件具有相同的名称。为什么会发生这种情况?我该如何防止这种情况发生?

这是我的脚本

#!/bin/bash
set -x
osdir=$(find /nodeFolder -maxdepth 1 -type f | wc -l)
lbdir=$(more /root/nodeFile.txt |wc -l)
lait2=1
l2=$(awk '{print $3}' < /root/nodeFile.txt | tail -$lait2 |head -1)
count=$(($lbdir-$osdir))
lait=1
newip=$(awk '{print $1}' < /root/nodeFile.txt | tail -$lait |head -1)
if [ $osdir -eq $lbdir ] ; then
   echo " Nothing to do "
else if [ $osdir -lt $lbdir ] ; then
   for ((i=0; i<count; i++)); do
       cd /nodeFolder
       cp node-p-2.cfg   $l2.cfg
       sed -i 's/192.168.0.2/'$newip'/' $l2.cfg
       sed -i 's/node-p-2/'$l2'/' $l2.cfg
       echo " Node is added successfull"
       lait=$((lait + 1))
       lait2=$((lait2 + 1))
   done
fi
fi

我的目标是在执行这些行时获得新价值

cp node-p-2.cfg   $l2.cfg
sed -i 's/192.168.0.2/'$newip'/' $l2.cfg
sed -i 's/node-p-2/'$l2'/' $l2.cfg

我必须创建节点文件及其放置在 /root/nodeFile.txt 中的 ip,我必须将其与已经放置一些文件的目录 /nodeFolder 进行比较。如果目录中放置的文件数不等于 /root/nodeFile.txt 的行数,则必须从底部读取 /root/nodeFile.txt 并获取节点名称和 ip 的输入,然后创建一个文件并根据示例文件 node-p-2.cfg 进行更改,我的脚本正在运行但在执行循环后没有更新两个变量 lait 和 lait2。因为我必须从底部输入它,然后是倒数第二行,然后是倒数第三行,然后是第四行等等。

答案1

如果您想在每次迭代时更新这些值,则需要在 for 块内设置l1和。newip

#!/bin/bash
set -x
osdir=$(find /nodeFolder -maxdepth 1 -type f | wc -l)
lbdir=$(more /root/nodeFile.txt |wc -l)
lait2=1
count=$(($lbdir-$osdir))
lait=1
if [ $osdir -eq $lbdir ] ; then
   echo " Nothing to do "
else if [ $osdir -lt $lbdir ] ; then
   for ((i=0; i<count; i++)); do
       cd /nodeFolder
       l2=$(awk '{print $3}' < /root/nodeFile.txt | tail -$lait2 |head -1)
       newip=$(awk '{print $1}' < /root/nodeFile.txt | tail -$lait |head -1)
       cp node-p-2.cfg   $l2.cfg
       sed -i 's/192.168.0.2/'$newip'/' $l2.cfg
       sed -i 's/node-p-2/'$l2'/' $l2.cfg
       echo " Node is added successfull"
       lait=$((lait + 1))
       lait2=$((lait2 + 1))
   done
fi
fi

PS:代码可读性不强,格式不正确,变量名含糊不清...这些对于发现错误没有帮助;)

相关内容