我制作了一个脚本,可以完成90%我想要做的事情。它进入一个目录(根据输入的日期)并更改我提供给数组的文件。但是,我想更改此脚本还包含一个日期数组(这是目录名称)。它将循环遍历目录,当它从文件名数组中找到其中一个文件时,它会对其进行更正并继续运行,直到所有文件都已更正为止。我已经尝试了几个不同的版本,但我不确定如何实现第二个数组以在文件更正后继续浏览目录。
目前,我的脚本如下所示:
debug=false
## *****Put file name in quotes******
declare -a arr=("UF19905217" "UG19905218" )
##Put date in DDMMYYYY format for the date the message was original processed.
DATE="25082015"
## now loop through the above array
for i in "${arr[@]}"
do
#if "$debug; then
echo "Fix file named: Inbound_$i.msg"
MSG="Inbound_$i.msg"
#fi
if [ ! -d "$MSG" ]; then
# Enter what you would like changed here. You can copy and paste this command for multiple changes
#DATATYPE
printf "%s\n" ',s/<DataType>EDI<\/DataType>/<DataType>830<\/DataType>/g' wq | ed -s /data1/Inbound/$DATE/$MSG
echo "Complete"
else
echo "Message not found or errored!"
fi
done
感谢您提供的任何帮助。谢谢。
答案 0 :(得分:1)
我相信你只想将循环中的循环包含在循环遍历所需目录的循环中:
debug=false
## *****Put file name in quotes******
declare -a arr=("UF19905217" "UG19905218" )
##Put date in DDMMYYYY format for the date the message was original processed.
dates=( 25082015 26082015 )
for DATE in "${dates[@]}"; do
for i in "${arr[@]}"; do
MSG="Inbound_$i.msg"
if $debug; then
echo "Fix file named: $MSG"
fi
if [ ! -d "$MSG" ]; then
printf "%s\n" ',s/<DataType>EDI<\/DataType>/<DataType>830<\/DataType>/g' wq | ed -s /data1/Inbound/$DATE/$MSG
echo "Complete"
else
echo "Message not found or errored!"
fi
done
done