0

我有一个有趣的问题,我似乎无法弄清楚。

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

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 这是我的文件的结尾,但我似乎无法弄清楚它是如何转义到脚本中的那个点的。

踢球者,这一切都在大约半小时前才起作用,它已经被难住了。

你能帮我吗?

4

2 回答 2

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.

于 2013-08-27T05:30:42.703 回答
1

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

于 2013-08-27T04:56:57.447 回答