-1

Я пытаюсь написать следующую задачу.

У меня есть файл, в котором обновляются имя узла и ips, я должен сделать каждый файл из тех узлов, которых нет в нашем требуемом каталоге, и которые находятся в обновленном файле, а также редактировать их имя.

Я должен дать ввод снизу вверх средствами от последней строки вверх, и мой сценарий будет выполняться снизу вверх в соответствии с моими потребностями, то есть теми записями, которые отсутствуют в моем требуемом каталоге.

Я использую условие if else и должен поставить цикл для выполнения моей задачи, пока он не сравняется.

Мой сценарий

#!/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. эта строка берет входные данные из файла и вырезает 3-й столбец, в котором сохраняются имена узлов
  6. также переменная
  7. принимая ip как вход из файла
  8. если условие

Каков синтаксис для цикла for ?

1 ответ1

1

Вы забыли пометить конец цикла for ключевым словом done .

Вы также не можете делать арифметику вроде lait1++ . Вы должны сделать что-то вроде

lait1=$(($lait1+1))

Вот больше информации о выполнении арифметических операций в сценариях оболочки Bash.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .