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

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

run源码

#!/bin/bash
set -o nounset  
set -o errexit


basedir=$(dirname $0)

declare -a args
for((i=0;i<=$#;i++))
do
        eval args[${i}]=\"\${${i}}\"
done

function 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值