The UNIX and Linux Forums  

Go Back   В UNIX и Linux Форумы > Топ форумы > Shell программирование и сценарии
.
Google unix.com



Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь.

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
Oracle соединения с корпусом сценарий DILEEP410 Shell программирование и сценарии 4 07-01-2009 03:19 AM
Я хочу призвать Oracle функция в мой скрипт dineshr85 Shell программирование и сценарии 4 10-16-2007 12:18 PM
Вход в Oracle или SQL скрипта из скорлупы manirsendhil Shell программирование и сценарии 2 04-10-2007 12:46 AM
Shell скриптов для загрузки данных в Oracle raghuraja_r Shell программирование и сценарии 3 07-21-2006 11:00
оболочке сценариев Oracle связи проблема nattynatty Shell программирование и сценарии 4 08-14-2002 10:48 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered By Powered by Google
 
LinkBack Резьба Инструменты Искать в этом Thread Оценить Thread Режимы дисплея
Old 05-26-2009
rechever rechever is offline
Зарегистрированный пользователь
  
 

Регистрация: Май 2009
Сообщений: 20
Справка с Oracle оболочки сценарий

Я получаю следующую ошибку в SHL
Применение: CP [-fhipHILPU] [-R |-R] [-E (силу | игнорировать | предупреждают)] [-] SRC целевой
или: CP [-fhipHILPU] [-R |-R] [-E (силу | игнорировать | предупреждают)] [-] src1 ... srcN каталог
Мне нужно отправить лог файл в PRGMR_MAILING_LIST, я изменился за хххх


Код:
#! /bin/sh
#
# #Retrieves and processes CSS IDOC file, then e-mails appropriate users
#
# Created by xxxxxx, May 2009 
#
# Purpose: 
# Retrieves and processes CSS IDOC file, then e-mails appropriate users
# 
# Will be submitted from crontab. 
# 
# Directory Location:
# Database Home Dir/middlebury/shl
#
#--------------------------------------------------------------------------------
#
# Modifications:
# Date Author Description
# 
# .
#
#********************************************************************************
# Set the Database
SID="$1";
SIDQ="@${SID}";
ORAENV_ASK=NO; export ORAENV_ASK
PATH=/usr/bin:/bin:/etc:/usr/sbin:/usr/ccs/bin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.:/usr/lbin:$ORACLE_HOME/bin:/usr/local/bin
export PATH
ORACLE_SID=${SID}; export ORACLE_SID; . oraenv
#waiting for account
UID_F="xxxxx";
PW_F="Dxxxxxx";
# set job name
JOBNAME1="rypidoc_shl"
# set home directory path
MPATH=$BANNER_HOME;
SCRIPT_PATH="${MPATH}/xxxxx/plus/"
SQL_SCRIPT1="@rypidoc_loadcss_run.sql"
SQL_SCRIPT2="@rypidoc_process2_run.sql"
 
# Set Log File path and name
LOG_FILE_PATH="/u02/sct/banjobs/";
LOG_FILE_NAME=${JOBNAME}_$$.log;
LF1=${LOG_FILE_PATH}${LOG_FILE_NAME};
LF2=${LOG_FILE_PATH}${LOG_FILE_NAME};
MAILING_LIST="xxxxxi@xxxxx.edu";
PRGMR_MAILING_LIST="xxxxxi@xxxxx.edu"; 
#------------------------------------------------------------------------------
# write header lines to job log
echo "${JOBNAME}.shl" >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "Running Date & Time: " >>${LF1} 2>>${LF2}
date >>${LF1} 2>>${LF2}
echo "Database = ${SID}" >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "Starting script " >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
##==============================================================================##
# Capture just the file sequence number 
fseqno=`print $i | sed 's/.*_//' | sed 's/.dat//' `
cd "${MPATH}/xxxxx/dat_files"
echo $i `date` > idochd1.lst
cp $i idoc.dat
DATA_FILE="${MPATH}/xxxxx/dat_files/3526*.dat ";
#Determine if there is a file to process
ls 3526*.dat > /dev/null 2>&1 
if [ $? != 0 ] 
then 
exit
fi
for i in 3526*.dat 
do
#=================================================================================#
# Change dir to where the sql scripts are
cd ${SCRIPT_PATH}
if test $? -eq 0
then
echo " " >>${LF1} 2>>${LF2}
echo "Successfully changed dir for sql script." >>${LF1} 2>>${LF2}
echo "${SCRIPT_PATH} " >>${LF1} 2>>${LF2}
else
echo " " >>${LF1} 2>>${LF2}
echo "Error: could not change dir for sql script." >>${LF1} 2>>${LF2}
echo "${SCRIPT_PATH} " >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "Script Ended and no updating done." >>${LF1} 2>>${LF2}
cat ${LF1} | mailx -s "${JOBNAME1} script failed! Could not change dir for sql script" $PRGMR_MAILING_LIST 
exit 1
fi
# Run sqlplus script to Load file into tables RYRIDOC_COVER, RYRIDOC_IMAGE, RYRIDOC_TAXDATA, RYRIDOC_W2
# pass the seqno as a paramater
sqlplus -s ${UID_F}/${PW_F}${SIDQ} ${SQL_SCRIPT1} $fseqno >>${LF1} ${UID_F} 2>>${LF2}
if test $? -eq 0
then
echo " " >>${LF1} 2>>${LF2}
echo "Successfully executed the ${SQL_SCRIPT1} script\n" >>${LF1} 2>>${LF2}
egrep -i "ORA-|Aborting|Error" ${LF1} >/dev/null
error_status=$? 
if [ "$error_status" = "0" ]
then
cat ${LF1} | mailx -s "${JOBNAME1} script failed! " $PRGMR_MAILING_LIST 
echo "\nOracle error occurred. Email sent to ${PRGMR_MAILING_LIST}" >>${LF1} 2>>${LF2}
exit 1
fi 
egrep -i "00" ${DATA_FILE} >/dev/null
error_status2=$?
if [ "$error_status2" != "0" ]
then
echo "No data loaded today." >>${LF1} 2>>${LF2}
else
cat ${LF1} | mailx -s "${JOBNAME1} Loading Process Finish! Could not change dir for sql script" $PRGMR_MAILING_LIST 
echo "\nEmail sent to ${MAILING_LIST} Loading Process Finish." >>${LF1} 2>>${LF2}
fi
else
echo " " >>${LF1} 2>>${LF2}
echo "Error: could not execute the ${SQL_SCRIPT1} script" >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "Script Ended and no updating done." >>${LF1} 2>>${LF2}
cat ${LF1} | mailx -s "${JOBNAME1} script failed!" Could not change dir for sql script" $PRGMR_MAILING_LIST 
exit 1
fi
#===================================================================================#
# Change dir to where the sql scripts are to run script2
cd ${SCRIPT_PATH}
if test $? -eq 0
then
echo " " >>${LF1} 2>>${LF2}
echo "Successfully changed dir for sql script." >>${LF1} 2>>${LF2}
echo "${SCRIPT_PATH} " >>${LF1} 2>>${LF2}
else
echo " " >>${LF1} 2>>${LF2}
echo "Error: could not change dir for sql script." >>${LF1} 2>>${LF2}
echo "${SCRIPT_PATH} " >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "Script Ended and no updating done." >>${LF1} 2>>${LF2}
cat ${LF1} | mailx -s "${JOBNAME1} script2 failed!" Could not change dir for sql script" $PRGMR_MAILING_LIST 
exit 1
fi
# run scipt to do the processing
sqlplus ${UID_F}/${PW_F} ${SQL_SCRIPT2} >>${LF1} 2>>${LF2} 
if test $? -eq 0
then
echo " " >>${LF1} 2>>${LF2}
echo "Successfully executed the ${SQL_SCRIPT1} script\n" >>${LF1} 2>>${LF2}
egrep -i "ORA-|Aborting|Error" ${LF1} >/dev/null
error_status=$? 
if [ "$error_status" = "0" ]
then
cat ${LF1} | mailx -s "${JOBNAME1} script2 failed!" Could not change dir for sql script" $PRGMR_MAILING_LIST 
echo "\nOracle error occurred. Email sent to ${PRGMR_MAILING_LIST}" >>${LF1} 2>>${LF2}
exit 1
fi 
egrep -i "00" ${DATA_FILE} >/dev/null
error_status2=$?
if [ "$error_status2" != "0" ]
then
echo "No data loaded today." >>${LF1} 2>>${LF2}
else
cat ${LF1} | mailx -s "${JOBNAME1} data loaded today !" Could not change dir for sql script" $PRGMR_MAILING_LIST 
echo "\nEmail sent to ${MAILING_LIST} Loading Process Finish." >>${LF1} 2>>${LF2}
fi
else
echo " " >>${LF1} 2>>${LF2}
echo "Error: could not execute the ${SQL_SCRIPT1} script" >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "Script Ended and no updating done." >>${LF1} 2>>${LF2}
cat ${LF1} | mailx -s "${JOBNAME1} script1 failed!" Could not change dir for sql script" $PRGMR_MAILING_LIST 
exit 1
fi
#-----------------------------------
echo " " >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "End Date & Time: " >>${LF1} 2>>${LF2}
date >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "Shell Script Completed." >>${LF1} 2>>${LF2}
exit

Биты Награжден / Отнесено на rechever этой темы
Свидание Пользователь Комментировать Сумма
05-26-2009 Neo Добавлен код тегов для плаката. -5.000
Old 05-26-2009
Кембридж cambridge is offline
Зарегистрированный пользователь
  
 

Регистрация: Май 2009
Сообщений: 55
Она смотрит на меня, как ваши проблемы с этой строки:


Код:
cp $i idoc.dat

Вы не установлены 'I' переменная эта точка, она пуста, поэтому ошибка в 'КП' команда - которая ожидает два аргумента. Вы не можете установить 'я' до тех пор, пока спустя несколько строк:


Код:
for i in 3526*.dat

Old 05-26-2009
rechever rechever is offline
Зарегистрированный пользователь
  
 

Регистрация: Май 2009
Сообщений: 20
К сожалению до сих пор не получить его, при этом новый материал
Когда я имею SHL, подобные этому, он работал, то только тогда, когда я пытаюсь отправить код по электронной почте,


Код:
#!/bin/ksh
#Retrieves and processes CSS IDOC file, then e-mails appropriate users

set -x

SID="$1";
SIDQ="@${SID}";

ORAENV_ASK=NO; export ORAENV_ASK
PATH=/usr/bin:/bin:/etc:/usr/sbin:/usr/ccs/bin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.:/usr/lbin:$ORACLE_HOME/bin:/usr/local/bin
export PATH
ORACLE_SID=${SID}; export ORACLE_SID; . oraenv

#waiting for account
UID_F="xxxxxx";
PW_F="xxxx";

# set job name
JOBNAME="rypidoc_shl"
# set home directory path
MPATH=$BANNER_HOME;

SCRIPT_PATH="${MPATH}/xxxxx/plus/"
SQL_SCRIPT1="@rypidoc_loadcss_run.sql"
SQL_SCRIPT2="@rypidoc_process2_run.sql"

#rm idochd1.lst htfn1.file htfn2.file  2> /dev/null

#Section One - Download from Website

#Section Two - Identify file(s) to process, process and rename

cd "${MPATH}/xxxxx/dat_files"

#Determine if there is a file to process
ls 3526*.dat > /dev/null 2>&1 

if [ $? != 0 ]                
then 
  exit
fi

for i in 3526*.dat              
do


# Capture just the file sequence number 
fseqno=`print $i | sed 's/.*_//' | sed 's/.dat//' `

cd "${MPATH}/xxxx/dat_files"
echo $i   `date` > idochd1.lst

cp $i idoc.dat

# Load file into tables RYRIDOC_COVER, RYRIDOC_IMAGE, RYRIDOC_TAXDATA, RYRIDOC_W2
##cd $SOFTPATH/script
# Change dir to where the sql scripts are
cd ${SCRIPT_PATH}
sqlplus -s ${UID_F}/${PW_F}${SIDQ} ${SQL_SCRIPT1}  $fseqno  >>${LF1} ${UID_F} 2>>${LF2}

# Process 
##cd $SOFTPATH/script
###sqlplus / @$SOFTPATH/script/rypidoc_process2_run.sql
cd ${SCRIPT_PATH}
sqlplus ${UID_F}/${PW_F} ${SQL_SCRIPT2}  >>${LF1} 2>>${LF2}

##cd $SOFTPATH/data/finaid/idoc
cd "${MPATH}/xxxxx/dat_files"

mv $i $i.processed

#Notify User
##cd $SOFTPATH/bin
##asysmail idoc.mail "CSS IDOC file received and processed" $SOFTPATH/log/rypidoc_process2.log
 echo "\nEmail sent to ${MAILING_LIST} Loading Process Finish." >>${LF1} 2>>${LF2}

# Find the last error file for each type
tfn1=$( ls -1t ${MPATH}/xxxxx/dat_files/idoc_nomatch* | grep -v BAN1bat| head -1 )

#Determine if tfn1 has any records-if so, send

count=`cat $tfn1 | wc -l `

if [ $count != 0 ]
then
cat ${MPATH}/xxxxx/dat_files/idochd1.lst $tfn1 > ${MPATH}/xxxx/dat_files/htfn1.file
##asysmail idoc.mail "CSS IDOC-No Match File" $SOFTPATH/data/finaid/idoc/htfn1.file
fi

tfn2=$( ls -1t $${MPATH}/xxxx/dat_files/idoc_error* | grep -v BAN1bat| head -1 )

#Determine if tfn2 has any records-if so, send

count=`cat $tfn2 | wc -l `

if [ $count != 0 ]
then
cat $${MPATH}/xxxx/dat_files/idochd1.lst $tfn2 > $S${MPATH}/xxxxx/dat_files/htfn2.file
##cd $SOFTPATH/bin
###asysmail idoc.mail "CSS IDOC-Error File" $SOFTPATH/data/finaid/idoc/htfn2.file
fi

done

exit

Биты Награжден / Отнесено на rechever этой темы
Свидание Пользователь Комментировать Сумма
05-26-2009 Neo Добавлен код тегов для плаката. -5.000
Old 05-28-2009
Кембридж cambridge is offline
Зарегистрированный пользователь
  
 

Регистрация: Май 2009
Сообщений: 55
Цитата:
К сожалению до сих пор не получить его, при этом новый материал
Когда я имею SHL, подобные этому, он работал, то только тогда, когда я пытаюсь отправить код по электронной почте,

Код:
echo $i `date` > idochd1.lst
cp $i idoc.dat
.....
for i in 3526*.dat 
do
...
done

... не работает, потому что $ I не установлен, когда Вы находитесь вне для петли.


Код:
for i in 3526*.dat              
do
...
echo $i   `date` > idochd1.lst
cp $i idoc.dat
...
done

... работает, потому что ваши ссылки на $ I прийти внутри для петли (между делать и готово).

Это является основным корпусом вещи, я советую вам купить книгу о UNIX оболочки сценариев и работы с некоторыми примерами.
Old 05-28-2009
devtakh devtakh is offline
Зарегистрированный пользователь
  
 

Регистрация: Oct 2007
Место проведения: Бангалор
Сообщений: 514
Переменная должна быть, прежде чем вы сможете использовать его в какую-то операции, которые он doen't ожидать нулевой строкой
Closed Thread

Закладки

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код На
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 10:28 AM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0