Linux 如何从一个目录中读取文件,并使用shell脚本将该文件作为另一个存储过程的输入?

Linux 如何从一个目录中读取文件,并使用shell脚本将该文件作为另一个存储过程的输入?,linux,bash,shell,Linux,Bash,Shell,我不熟悉编写shell脚本,我有一个名为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

我不熟悉编写shell脚本,我有一个名为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\u FILES='ls-l$XML\u FILES/*.XML'
用于XML_文件中的f
做
$f
如果[$?=0]
然后
mv$f$XML\u处理的\u目录/
其他的
mv$f$XML\u错误\u目录/
fi
完成

我正在寻找一种可以从/xml_files目录中选取文件并将文件作为输入参数发送到存储过程以处理xml文件的方法

您可以使用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}采用其他格式,您应该进一步澄清问题。

您还可以使用
find
对找到的每个文件执行给定的命令。例如:

find ${Xml_Files} -name '*.xml' -type f -exec something {} \;
这将搜索目录
${xml\u Files}
中扩展名为xml(
-name'*.xml'
)的每个文件(
-type f
),并在找到的每个
x
上执行
某物x


您还可以使用
find
执行短bash脚本,例如:

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

您在
XML\u Files
目录下有子目录吗?没有,我没有子目录。您可以编写一个简短的脚本,首先转到所需目录,如:
cd/desired/directory/
,然后应用
for
循环,如:
for i in*.XML;做$i;完成
谢谢..我使用${Xml_Files}/*.Xml来选择我的文件,它的工作“…但我无法得到预期的结果”不是一个好的问题陈述。问题或错误是什么?另见。