-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRun.sh
More file actions
executable file
·119 lines (97 loc) · 3.29 KB
/
Copy pathRun.sh
File metadata and controls
executable file
·119 lines (97 loc) · 3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/bin/bash
#=========================================================
# This script Run the project.
#
# Shule Yu
# Jun 23 2014
#=========================================================
# Export variables to all sub scripts.
set -a
CODEDIR=${PWD}
SRCDIR=${CODEDIR}/SRC
RunNumber=$$
#============================================
# ! Test Files !
#============================================
if ! [ -e ${CODEDIR}/INFILE ]
then
echo "INFILE not found ..."
exit 1
fi
#============================================
# ! Parameters !
#============================================
# DIRs.
WORKDIR=`grep "<WORKDIR>" ${CODEDIR}/INFILE | awk '{print $2}'`
mkdir -p ${WORKDIR}/LIST
mkdir -p ${WORKDIR}/INPUT
cp ${CODEDIR}/INFILE ${WORKDIR}/tmpfile_INFILE_$$
cp ${CODEDIR}/INFILE ${WORKDIR}/INPUT/INFILE_`date +%m%d_%H%M`
cp ${CODEDIR}/LIST.sh ${WORKDIR}/tmpfile_LIST_$$
cp ${CODEDIR}/LIST.sh ${WORKDIR}/LIST/LIST_`date +%m%d_%H%M`
chmod -x ${WORKDIR}/LIST/*
cd ${WORKDIR}
# Dealt with single parameters.
grep -n "<" ${WORKDIR}/tmpfile_INFILE_$$ \
| grep ">" | grep -v "BEGIN" | grep -v "END" \
| awk 'BEGIN {FS="<"} {print $2}' \
| awk 'BEGIN {FS=">"} {print $1,$2}' > tmpfile_$$
awk '{print $1}' tmpfile_$$ > tmpfile1_$$
awk '{$1="";print "\""$0"\""}' tmpfile_$$ > tmpfile2_$$
sed 's/\"[[:blank:]]/\"/' tmpfile2_$$ > tmpfile3_$$
paste -d= tmpfile1_$$ tmpfile3_$$ > tmpfile_$$
source ${WORKDIR}/tmpfile_$$
# Dealt with multiple parameters.
# They are between <XXX_BEGIN> and <XXX_END>
# The list is put into ${WORKDIR}/tmpfile_XXX_${RunNumber}
grep -n "<" ${WORKDIR}/tmpfile_INFILE_$$ \
| grep ">" | grep "_BEGIN" \
| awk 'BEGIN {FS=":<"} {print $2,$1}' \
| awk 'BEGIN {FS="[> ]"} {print $1,$NF}' \
| sed 's/_BEGIN//g' \
| sort -g -k 2,2 > tmpfile1_$$
grep -n "<" ${WORKDIR}/tmpfile_INFILE_$$ \
| grep ">" | grep "_END" \
| awk 'BEGIN {FS=":<"} {print $2,$1}' \
| awk 'BEGIN {FS="[> ]"} {print $1,$NF}' \
| sed 's/_END//g' \
| sort -g -k 2,2 > tmpfile2_$$
paste tmpfile1_$$ tmpfile2_$$ | awk '{print $1,$2,$4}' > tmpfile_parameters_$$
while read Name line1 line2
do
Name=${Name%_*}
awk -v N1=${line1} -v N2=${line2} '{ if ( $1!="" && N1<NR && NR<N2 ) print $0}' ${WORKDIR}/tmpfile_INFILE_$$ \
| sed 's/^[[:blank:]]*//g' > ${WORKDIR}/tmpfile_${Name}_$$
done < tmpfile_parameters_$$
#============================================
# ! Additional DIRs. !
#============================================
EXECDIR=${WORKDIR}/bin
PLOTDIR=${WORKDIR}/PLOTS
mkdir -p ${EXECDIR}
mkdir -p ${PLOTDIR}
#============================================
# ! Compile !
#============================================
trap "rm -f ${WORKDIR}/*_$$; exit 1" SIGINT
cd ${SRCDIR}
make OUTDIR=${EXECDIR}
[ $? -ne 0 ] && rm -f ${WORKDIR}/*_$$ && exit 1
echo "Compile finished...running..."
# ==============================================
# ! Work Begin !
# ==============================================
cd ${WORKDIR}
cat >> ${WORKDIR}/stdout << EOF
======================================
Run Date: `date`
EOF
bash ${WORKDIR}/tmpfile_LIST_$$ >> ${WORKDIR}/stdout 2>&1
cat >> ${WORKDIR}/stdout << EOF
End Date: `date`
======================================
EOF
echo "Finished."
# Clean up.
rm -f ${WORKDIR}/*_$$
exit 0