The UNIX and Linux Forums  

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



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

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
Как проверить пути существуют, либо не в сценарий оболочки UNIX suneelc UNIX для чайников Вопросы И Ответы 3 01-22-2008 08:36 AM
Нужна Сценарист проверить файл существует, и сравните rbknisely UNIX для чайников Вопросы И Ответы 1 01-16-2008 01:08 AM
Как проверить, если каталог / файл существует, используя C / C + + steven88 Программирования высокого уровня 2 01-03-2006 02:55 AM
Как проверить, если каталог / файл существует, используя C / C + + steven88 Shell программирование и сценарии 1 01-02-2006 10:45 PM
Как проверить, если файл существует или нет? gusla UNIX для чайников Вопросы И Ответы 3 03-27-2002 10:56 PM

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 11-12-2006
heprox heprox is offline
Зарегистрированный пользователь
  
 

Регистрация: Jul 2005
Сообщений: 32
Question Ли скрипт проверки файла на существование перед обработкой другой файл

У меня есть скрипт, работает все время ищете определенный тип файла, а затем обрабатывает файл с помощью ряда других сценариев. Сценарий просмотре каталога, который имеет файлы, загруженные в него через SFTP. Это уже проверяет размер файла, чтобы убедиться, что это не все еще до загрузки начинается обработка. Я хотел бы поставить еще один чек на скрипт, который смотрит на существование другого файла до начала обработки. Сценарий выглядит следующим образом:

Код:
#!/bin/ksh
PATH=/gers/nurev/menu/pub/sbin:/gers/nurev/menu/pub/bin:/gers/nurev/menu/pub/mac
:/gers/nurev/menu/adm/sbin:/gers/nurev/menu/adm/bin:/gers/nurev/menu/adm/mac:/ge
rs/nurev/custom:/gers/nurev/fix:/gers/nurev/src_rev/fix:/gers/nurev/opt/path:/ge
rs/nurev/bin:/g/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:/sbin:.
ORACLE_HOME=/gers/nurev
ORACLE_SID=nurev
export PATH
export ORACLE_HOME
export ORACLE_SID
 
#
# Function : is_file_arrived file
# Arg(s)   : file = file to verify
# Output   : None
# Status   : 0 = yes file arrived, 1 = no
# Env.     : IFA_WAIT : interval (secs) for file size check (def=5)
#
 
is_file_arrived() {
   [ -z "$1" ] && return 1
   local file=$1
   local arrived=1
   local size1 size2
   if [ -f "$file" -a -z "$(fuser $file 2> /dev/null)" ] ; then
      size1=$(ls -l $file 2>/dev/null | awk '{print $5}')
      sleep ${IFA_WAIT:-15}
      size2=$(ls -l $file 2>/dev/null | awk '{print $5}')
      [ ${size1:-1} -eq ${size2:-2} ] && arrived=0
   fi
   return $arrived
}
 
 
processFile ()
{
   local fileName=$1
   local fileExtension=$2
   local fileNewName="/gers/nurev/datafiles/str${fileExtension}.asc"
   local filePrintPath="/gers/nurev/print"
   local fileTmpPath="/gers/nurev/tmp"
   local fileODIName="str${fileExtension}.pos"
   mv -Eignore $fileName $fileNewName     
   prepup $fileNewName $fileExtension
   mv -Eignore  $filePrintPath/$fileODIName $fileTmpPath/$fileODIName
   save2tmp $fileExtension
   call_siu $fileExtension
}
 
# Main Processing
 
nsec=1
while [[ "$(date +%H%M)" -lt 2329 ]]
do
   for fileName in /gers/nurev/datafiles/[Uu][Pp][Ll][Oo][Aa][Dd].[0-9][0-9][0-9
][0-9]
   do
      fileExtension=${fileName#*.}
      is_file_arrived "$fileName" && nsec=1 && processFile $fileName $fileExtension
   done
   sleep $nsec
   case $nsec in
      1)   nsec=15;;
      15)  nsec=45;;
      45)  nsec=90;;
      90)  nsec=300;;
      300) nsec=600;;
      600) nsec=900;;
      *)   nsec=1800;;
   esac
done
... Я бы хотел, чтобы проверить наличие файла в / юрт / genret / TMP / poll_ ####. TXT (где "####" является $ fileExtension переменной. Я думаю, проверьте файл должен быть в "Главная Processing" раздел, прежде чем он направляет в файл на "is_file_arrived" функцию? I'f есть "poll_ ####. TXT-файл настоящему я бы точно так же, как скрипт, чтобы перейти на следующий файл и посмотрите на он еще раз позже. Это позволит предотвратить два файла одного и того же вида обработки одновременно. Я думаю нечто вроде "если-то"?
Old 11-13-2006
aigles's Avatar
aigles aigles is online now Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Apr 2004
Расположение: Бордо, Франция
Сообщения: 1428
Вы можете сделать что-то вроде этого:
Код:
   for fileName in /gers/nurev/datafiles/[Uu][Pp][Ll][Oo][Aa][Dd].[0-9][0-9][0-9
][0-9]
   do
      fileExtension=${fileName#*.}
      [[ -a /gers/genret/tmp/poll_$fileExtension.txt  ]] && continue
      is_file_arrived "$fileName" && nsec=1 &&       processFile $fileName $fileExtension
   done
Жан-Пьер.
Old 11-13-2006
heprox heprox is offline
Зарегистрированный пользователь
  
 

Регистрация: Jul 2005
Сообщений: 32
Ты потерял меня ....

Простите мое невежество, так как бы в скобки "-A" работает?

Код:
[[ -a /gers/genret/tmp/poll_$fileExtension.txt  ]] && continue
... было бы проверить файл "poll_", и если оно было останавливаться на достигнутом, и перейти к следующему файлу? Я путать, как это работает?
Old 11-14-2006
aigles's Avatar
aigles aigles is online now Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Apr 2004
Расположение: Бордо, Франция
Сообщения: 1428
Следующий код равен:
Код:
if [[ -a /gers/genret/tmp/poll_$fileExtension.txt  ]]
then
   continue
fi
Если файл существует pooll_, а затем возобновить следующей итерации в цикле для (ПРОСЕДЕ следующий файл).


Жан-Пьер.
Closed Thread

Закладки

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

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

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

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




Часовой пояс GMT -4. Текущее время 08:57 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