【问题标题】:Bash Scipt with function / for loop带有函数 / for 循环的 Bash 脚本
【发布时间】:2018-08-30 20:35:43
【问题描述】:

我正在为库存信息编写一个 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

【问题讨论】:

  • 试试shellcheck
  • awk '{print $0}' 打印其输入不变,您的意思是$1
  • @thatotherguy 谢谢你,先生,这有帮助!它让那部分工作,现在我只有一堆其他的事情要做。非常感谢!

标签: bash for-loop if-statement


【解决方案1】:

我看到if...

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

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

我看到 for - do - else... 后面跟着 done...?!?

应该是:

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

你把这些搞混了。适当的缩进会让这一点显而易见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 2011-10-25
    相关资源
    最近更新 更多