2013-08-27 1 views
0

У меня есть интересный вопрос, который я не могу понять.Базовый сценарий 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 который является концом моего файла, но я не могу показаться, чтобы выяснить, как она убегает в этот момент в сценарии.

Кикер, все это работало до полутора часов назад, и он был в тупике.

Можете ли вы мне помочь?

+0

Попробуйте добавить цитаты вокруг '[a-z]'. Уверен, вы создали файл в текущем каталоге с однобуквенным именем. – hobbs

+0

Линия 2898? Это один адский сценарий ... – nneonneo

+0

Lol, должен быть сценарий. Скомпилированный код не разрешен. –

ответ

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 

Это потенциально может вызвать проблемы для Баш парсера сталкивано, вызывая ошибку EOF, когда bash пытается найти недостающие fi.

+0

Фантастический. Мне просто нужен был второй набор глаз. Спасибо! –

1

Возможно, это означает, что у вас есть закрытое заявление if или подобное. Bash читает простые команды по требованию, но когда дело доходит до такого сложного оператора, он хочет прочитать весь оператор if и его содержимое. Если он затем наступает на EOF, все еще пытаясь прочитать до конца, он даст вам эту ошибку.

+0

Так что это может быть не проблема с кодом, который представлен, а скорее код, который выполняется перед ним. У меня есть несколько «сложных» команд в этом скрипте.Множество мест для того, чтобы сбиться с пути. –

+0

Я добавил более точную картину кода. –

Смежные вопросы