bash 中 if else 条件下的 for 循环

bash 中 if else 条件下的 for 循环

我正在尝试编写以下任务脚本。

我有一个文件,其中的节点名称和 ips 已更新,我必须制作那些不在我们所需目录中的节点的每个文件,并且这些节点都在更新的文件中,并且编辑它们的名称。

我必须从下往上输入,也就是从最后一行往上输入,而我的脚本将根据我的需要从下往上运行,也就是我所需目录中缺少的那些条目。

我使用 if else 条件并且必须放置 for 循环来执行我的任务直到它相等。

我的脚本是

#!/bin/bash

set -x

giosdir=$(find /usr/local/example-dir  -maxdepth 1 -type f | wc -l)

lbdir=$(more /root/scripts/servers/new/example.txt |wc -l)

count=$(($lbdir-$giosdir))

lait2=1

l2=$(awk '{print $3}' < /root/scripts/servers/new/example.txt | tail -$lait2)

lait=1

newip=$(awk '{print $1}' < /root/scripts/servers/new/example.txt | tail -$lait)

if [ $nagiosdir -eq $lbdir ] ; then

    echo " Nothing to do "

else

    if [ $giosdir -lt $lbdir ] ; then


       for((i=0;i<count;i++));do

       {

            cd /usr/local/

            cp example-Node-2.txt   $l2.txt

            sed -i 's/10.10.0.1/'$newip'/' $l2.txt

            sed -i 's/examole-Node-2.txt/'$l2'/' $l2.txt

            echo " Node is added successfull"

            lait2++;

            lait++;           

       }

    fi

fi

我收到此错误:

line 43: syntax error near unexpected token `fi' 
line 43: `         fi  '

我的脚本的描述

  1. 第一行从目录中获取有多少个文件。
  2. 此行从文件中获取输入,该文件有多少行
  3. 减去数字,结果将是一个整数
  4. 声明下一行使用的变量值
  5. 此行从文件中获取输入并剪切保存节点名称的第三列
  6. 也是一个变量
  7. 从文件中获取 IP 作为输入
  8. if 条件

循环的语法是什么for

答案1

for您忘记用关键字标记循环的结束done

你也不能像 那样做算术运算lait1++。你必须做类似的事情

lait1=$(($lait1+1))

以下是更多信息在 Bash shell 脚本中执行算术运算。

相关内容