具有功能/ for循环的Bash Scipt

时间:2018-08-30 20:35:44

标签: bash for-loop if-statement

我正在编写一个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 :(得分:1)

我看到一个if ...

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

...但没有fi。 (这是您收到的错误消息背后的实际问题-文件终止-意外-在if关闭之前。)

我看到一个for-do- else ...之后是done ...?!?

应该是:

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

您把这些混在一起了。适当的缩进将使这一点显而易见。