function generatejson(){ (方法内的参数是不需要声明的,在main方法里面调用的时候声明即可)
FILTERS=`sqlplus -s inn/${TABLEA} <<EOF
SET HEAD OFF
SET FEEDBACK OFF
SET PAGESIZE 0
select ****(sql语句)
from ***
where xxxx= '$1' ($1表示,在main方法调用在这个这个方法的时候,会把参数1带到这里面来)
AND ***
/
EXIT
EOF`
if [ -n "${FILTERS}" ]; then
echo "${FILTERS}" > $PARH (把上面sqlhi行出来的结果传到这个路径的文件里面。PATH定义在config里面)
while read line
do
if [ -n "$line" ]; then
IFS',' read -a arr <<< "$line" (每读一行line就把数据传到arr数组里)
fi (if-elif-fi是一套完整的if语句)
done <<< $PATH (把这个文件传岛循环里面,然后一行一行的读)
(while-do-done是一套完整的循环语句)
fi
}
function main(){
jsonA=$(generatejson ${DATED} "") (表示调用上面的方法,参数1是${DATED},参数2是空的,如果有参数3就依次往下写即可。注意参数之间有空格)
echo "[${jsonA}]" >> $PATHA
}
sql结果的样式 | FG,6,1,businessHotel,2,f_squeezes,business,2,1 |
上面是简单的一个shell,通过SQL读取DB,然后一条条的生成json,存放在指定的path里面。
因为没接触过shell,所以记录一下。
生成的json样式
[
{
"FG": "FG",
"no": "6",
"ID": "1",
"Feat": [
{
"nFeat": "hotel",
"noLayer": "1",
"key": "f_squeezes",
"value": "hotel",
"orderNo": "1",
"secondFeat": [
{
"nFeat": "businessHotel",
"noLayer": "1",
"key": "f_squeezes",
"value": "business",
"orderNo": "1"
}
]
}
]
}
]