Как прочитать файлы из одного каталога и передать файл как ввод другой хранимой процедуры, используя сценарии оболочки? - PullRequest
0 голосов
/ 27 декабря 2018

Я новичок в написании сценариев оболочки и у меня есть каталог с именем XML_Files, который содержит список XML-файлов

01.xml

02.xml

03.xml

04.xml

Я хотел прочитать все XML-файлы один за другим и отправить файлы в мой сохраненныйПроцедура в качестве входного аргумента.так что хранимая процедура будет обрабатывать каждый XML-файл один за другим соответственно.

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

XML_FILES='ls -l $Xml_Files/*.xml'
for f in XML_FILES
do
<<Stored procedure>> $f
if [ $? = 0 ] 
then 
  mv $f $XML_Proccesed_Dir/
else
    mv $f $XML_error_Dir/
fi
done

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

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Вы также можете использовать find для выполнения данной команды для каждого найденного файла.Пример:

find ${Xml_Files} -name '*.xml' -type f -exec something {} \;

Это будет искать каждый файл (-type f) с расширением xml (-name '*.xml') в каталоге ${Xml_Files} и выполнять something x на каждом x найденном.

Вы также можете использовать find для выполнения короткого сценария bash, например:

find ${Xml_Files} -name '*.xml' -type f -exec bash -c 'echo {}' \;
0 голосов
/ 27 декабря 2018

Вы можете просто использовать расширение подстановочного знака в bash, чтобы получить список файлов XML внутри папки.

for f in ${Xml_Files}/*.xml; do 
    something ${f}
    ....
done

${f} в этом цикле будет иметь вид:

${Xml_Files}/01.xml
${Xml_Files}/02.xml
${Xml_Files}/03.xml
${Xml_Files}/04.xml

Если вам нужно, чтобы $ {f} был в каком-либо другом формате, вы должны уточнить вопрос больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...