shell根据配置文件调用不同程序

来源:互联网 发布:淘宝代销商如何刷销量 编辑:程序博客网 时间:2024/06/05 02:50

如run scala启动配置文件中定义好的scala路径中的scala

run源码

#!/bin/bashset -o nounset  set -o errexitbasedir=$(dirname $0)declare -a argsfor((i=0;i<=$#;i++))do        eval args[${i}]=\"\${${i}}\"donefunction main(){        getProperties "${basedir}/../conf/run.conf" keys values        #get config example : value=$(findValue key keys values)        # add code here        echo to findvalue ${args[1]} in ${keys[@]} >&2        echo the values is ${values[@]} >&2        program=$(findValue ${args[1]} keys values)        shift        shift        echo to run ${program} "$@" >&2        ${program} "$@"}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%%=*}                    localvalue=${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}}
main "${args[@]}"

run.conf配置例:

scala=/sysdir/scala-2.10.3/bin/scala
scalac=/sysdir/scala-2.10.3/bin/scalac
spark-shell=/sysdir/spark-0.9.1-bin-hadoop2/bin/spark-shell
shark=/sysdir/shark-0.9/bin/shark
hive=/sysdir/hive-0.11/bin/hive

0 0
原创粉丝点击