基本Bash脚本过早退出。工作很好,直到半小时前

时间:2013-08-27 04:50:46

标签: bash

我有一个有趣的问题,我似乎无法弄明白。

我有一个基本脚本,可以提取配置信息并将其重定向到文件:

cat /etc/something > 1

cat /etc/something-else > 2

我的数据收集完成后,我会运行一个“解析器”,提供有关支票的信息:

#58

id="RHEL-06-000001"
ruleid="The system must require passwords to contain at least one special character."
if grep -G [a-z] 1; then
    ocredit=`cat 1 | grep -v "^#" | awk '{print $2}'`
    if [ "$ocredit" -le -1 ]; then
            result="Not A Finding"
            todo="None"
    else
            result="Open"
            todo="The current value is $ocredit. This is less than the minimum requirement of -     1."
    fi
else
    result="Open"
    todo="The option is not configured"
fi
echo "$id, $ruleid, $result, $todo" >> Findings.csv

#59

id="RHEL-06-000002"
ruleid="The system must require passwords to contain at least one lowercase alphabetic     character."
if grep -G [a-z] 2; then
    lcredit=`cat 2 | awk -F"=" '{print $2}'`
    if [ "$lcredit" -le -1 ]; then
            result="Not A Finding"
            todo="None"
    else
            result="Open"
            todo="The current value is $lcredit. This is less than the minimum requirement of -1."
    fi
else
    result="Open"
    todo="The system is not configured to require at least one lowercase alphabetical charatcer in passwords."
echo "$id, $ruleid, $result, $todo" >> Findings.csv

或远程接近的东西。

我发生了大约250次这样的检查,但是我的代码在前58次运行然后停止,不再将内容重定向到checks.csv。

脚本过早完成后我确实收到错误,说明 ./checker.sh: line 2898: syntax error: unexpected end of file 这是我的文件的结尾,但我似乎无法弄清楚它是如何逃避到脚本中的那一点。

这个踢球者,直到大约半个小时前才开始工作,而且它已经难倒了。

你可以帮帮我吗?

2 个答案:

答案 0 :(得分:2)

你似乎错过了第二行之后的fi

else
    result="Open"
    todo="The system is not configured to require at least one lowercase alphabetical charatcer in passwords."
## HERE ##
echo "$id, $ruleid, $result, $todo" >> Findings.csv

这可能会在遇到问题时导致bash解析器出现问题,导致bash尝试查找丢失的fi时出现EOF错误。

答案 1 :(得分:1)

这可能意味着你有一个未公开的if声明或类似声明。 Bash按需读取简单的命令,但是当它出现这样的复杂语句时,它想要读取整个if语句及其内容。如果它仍然在尝试阅读到它的结尾时出现EOF,它将会给你错误。