shell根据模板创建源程序

来源:互联网 发布:大数据网站 编辑:程序博客网 时间:2024/05/16 10:08

create XXX.py时用template.py创建初始的python脚本

同样可以创建java、scala、shell程序文件

#!/bin/bashset -o nounsetset -o errexitif [[ $# -ne 1 ]]; then        echo need 1 parameter for filename to create        echo filename should be XXX.scala XXX.py or XXX.sh        exit 1fibindir=`dirname $0`file="$1"ext=${file##*.}classfullpath=${file%.*}classname=${classfullpath##*.}packagename=${classfullpath%.*}if [[ -f "${classname}.${ext}" ]]; then        echo file "${classname}.${ext}" is already exists        exit 1ficase ${ext} in        scala)            templatefile=${bindir}/templates/template.scala            ;;        java)            templatefile=${bindir}/templates/template.java            ;;        py)            templatefile=${bindir}/templates/template.py            ;;        sh)            templatefile=${bindir}/templates/template.sh            ;;        *)            echo 'invalid filename'            exit 1esacsed "s/\${CLASSNAME}/${classname}/g" ${templatefile} | sed "s/\${PACKAGENAME}/${packagename}/g" > "${classname}.${ext}"

scala模板例

object ${CLASSNAME} {  def main(args : Array[String]) = {    val config = getProperties("../conf/${CLASSNAME}.conf")    // get config example : val value = config.get("output")    // add code here    println("Hello world!");  }  def getProperties(conffile:String) : Map[String,Any] = {    var config = new java.util.Properties();    try {      config.load(new java.io.FileInputStream(conffile));    } catch {      case _: Exception => ;    }    val map = scala.collection.JavaConversions.mapAsScalaMap(config).map(t=>(t._1.toString()->t._2))    return map.toMap  }  def runOther(scriptfile:String, args:Array[String]=Array[String]()) = {    scala.tools.nsc.MainGenericRunner.main(scriptfile +: args)  }}

java模板例

class ${CLASSNAME} {  public static void main(String[] args) {    java.util.Properties config = getProperties("../conf/${CLASSNAME}.conf");    // get config example : String value = (String) config.get("output")    // add code here    System.out.println("Hello world!");  }  public static java.util.Properties getProperties(String conffile) {    java.util.Properties config = new java.util.Properties();    try {      config.load(new java.io.FileInputStream(conffile));    } catch(Exception e) {    }    return config;  }  public static void runOther(String classname, String[] args) throws Exception {    Class clazz = Class.forName(classname);    clazz.getMethod("main",args.getClass()).invoke(clazz.newInstance(), args);  }}

python模板例

#!/usr/bin/python#coding=utf-8import sysdef main(argv):        config = getProperties("../conf/${CLASSNAME}.conf")        #get config example : value = config.get('setting', 'output')        # add code here        print("hello world!")def getProperties(filename):        import ConfigParser        config = ConfigParser.ConfigParser()        try:            config.readfp(open(filename,"rb"))        except Exception:            pass        return configdef runOther(filename, argv):        import subprocess        subprocess.call(["python",filename] + argv)if( __name__ == "__main__" ):        main(sys.argv)

shell模板例

#!/bin/bashset -o nounsetset -o errexitworkdir=$(dirname $0)cd ${workdir}declare -a argsfor((i=0;i<=$#;i++))do        eval args[${i}]=\"\${${i}}\"donefunction main(){        getProperties "../conf/${CLASSNAME}.conf" keys values        #get config example : value=$(findValue key keys values)        # add code here        echo "Hello world!"}function getProperties(){        localfilename="$1"        localkeys="$2"        localvalues="$3"        unset ${localkeys}        unset ${localvalues}        locali=0        if [[ -f "${localfilename}" ]]; then            while read line            do                if [[ "${line:0:1}" != "[" ]]; then                    localkey=${line%%=*}                    if [[ "${localkey}" != "" ]]; then                        eval ${localkeys}[${locali}]=\"${localkey}\"                        eval ${localvalues}[${locali}]=\"${localvalue}\"                        let locali=${locali}+1                    fi                fi            done < "${localfilename}"        fi}function findValue(){        localkey="$1"        eval localkeys=(\"\${$2[@]}\")        eval localvalues=(\"\${$3[@]}\")        for((locali=0; locali<${#localkeys[@]}; locali++))        do            if [[ "${localkey}" == "${localkeys[${locali}]}" ]]; then                localvalue="${localvalues[${locali}]}"                break            fi        done        echo ${localvalue}}function runOther(){        filename="$1"        args="$2"        bash ${filename} "${args[@]}"}main "${args[@]}"


0 0