Bash Scipt с функцией / для петли - PullRequest
0 голосов
/ 30 августа 2018

Я пишу сценарий bash для информации об инвентаризации и пытаюсь собрать данные о двух отдельных версиях Red Hat. У них есть два разных типа вывода для ifconfig, поэтому я просто пытаюсь добавить оператор if в уже работающую функцию. Я получаю сообщение об ошибке syntax error: unexpected end of file . Я предполагаю, что я не закрываю что-то где-то, но я не могу видеть это, хотя я, вероятно, смотрю на это слишком долго. любая помощь будет отличной.

Вот сценарий

#!/bin/sh
OS_VERSION=`cat /etc/redhat-release  |awk '{print $0}'`
pat=".*Santiago.*"

num=1
        if [[ "$OS_VERSION" =~ $pat ]]; then

                for i in `/sbin/ifconfig -a |grep -i -B 3 "UP" |grep -i "HWaddr"|awk '{print $1}'`
                        do
                                {
                                MacAddress=`/sbin/ifconfig $i |grep -i -B 3 "UP" |grep -i "HWaddr"| awk '{print $NF}'`
                                Ip_Address=`/sbin/ifconfig $i|grep -i "inet addr"|awk '{print $2}'|awk -F: '{print $2}'`
                                echo -n "ethName$num=$i | ethMac$num=\"$MacAddress\" | ethIp$num=\"$Ip_Address\" | "
                                num=$(expr $num+1|bc)
                                }
                         else 
                            echo "Not Santiago, use other script"
done;
echo "";
exit

1 Ответ

0 голосов
/ 30 августа 2018

Я вижу if ...

if [[ "$OS_VERSION" =~ $pat ]]; then

... но нет fi. (Это фактическая проблема, стоящая за сообщением об ошибке - файл неожиданно заканчивается - до того, как if будет закрыто.)

Я вижу for - do - else ... и done ...?!?

Должно быть:

  • if - then - [else] - fi
  • for - do - done.

Вы немного перепутали. Правильный отступ сделал бы это очевидным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...