Ошибка при выполнении команд в скрипте - PullRequest
0 голосов
/ 14 марта 2020

Я создаю сценарий, чтобы получить счет из таблицы, сохранить его в текстовом файле и вызвать сообщение, чтобы команда узнала счет в таблице за день

   #!/bin/bash

    today=$(date +%d-%m-%Y)

    > /tmp/score_cnt.txt

    FILE="/tmp/score_cnt.txt"

    sqlplus -S user/Pass@service<< EOF
    set heading off;

    spool $FILE
    select count(*) from score_tbl;
    spool off;

    count= cat /tmp/score_cnt.txt

    if ($count eq O)
    then (
    echo "Dear All,

    URGENT! Please check if the ETL execution is success as the todays count in Table is 0
    ") | mailx -S smtp=XX:XX:XX:XX:XX -s "COUNT FOR $today : $count" -a /tmp/score_cnt.txt abc@gmail.com

    else

    echo "Today's count in table is $count!"
    | mailx -S smtp=XX:XX:XX:XX:XX -s "COUNT FOR $today : $count" -a /tmp/score_cnt.txt abc@gmail.com

    exit;
    EOF

Но я ' Я столкнулся с проблемой ниже, так как некоторые из заявлений не выполняются. Может кто-нибудь, пожалуйста, дайте мне знать, что не так в сценарии.

++ date +%d-%m-%Y
+ today=14-03-2020
+ FILE=/tmp/score_cnt.txt
+ sqlplus -S user/Pass@service<< EOF

  19127227

SP2-0734: unknown command beginning "count= cat..." - rest of line ignored.
SP2-0042: unknown command "if ( eq O)" - rest of line ignored.
SP2-0042: unknown command "then (" - rest of line ignored.
SP2-0734: unknown command beginning "echo "Dear..." - rest of line ignored.
SP2-0044: For a list of known commands enter HELP
and to leave enter EXIT.
SP2-0734: unknown command beginning "URGENT! Pl..." - rest of line ignored.
SP2-0734: unknown command beginning "") | mailx..." - rest of line ignored.
SP2-0044: For a list of known commands enter HELP
and to leave enter EXIT.
SP2-0042: unknown command "else" - rest of line ignored.
SP2-0734: unknown command beginning "echo "Toda..." - rest of line ignored.
SP2-0734: unknown command beginning "| mailx -S..." - rest of line ignored.

1 Ответ

0 голосов
/ 14 марта 2020

Попробуйте:

#!/bin/bash

today=$(date +%d-%m-%Y)

> /tmp/score_cnt.txt

FILE="/tmp/score_cnt.txt"

sqlplus -S user/Pass@service<< EOF
set heading off;

spool $FILE
select count(*) from score_tbl;
spool off;

EOF

count=$(cat /tmp/score_cnt.txt)

if ((count == O)); then
    echo "Dear All,

URGENT! Please check if the ETL execution is success as the todays count in Table is 0
" |
    mailx -S smtp=XX:XX:XX:XX:XX -s "COUNT FOR $today : $count" -a /tmp/score_cnt.txt abc@gmail.com

else

    echo "Today's count in table is $count!" |
    mailx -S smtp=XX:XX:XX:XX:XX -s "COUNT FOR $today : $count" -a /tmp/score_cnt.txt abc@gmail.com

fi

но я думаю, вы могли бы просто:

count=$(sqlplus -S user/pass@server <<EOF
set heading off;
select count(*) from score_tbl;
EOF
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...