首页 > 代码库 > BASH 文本模版的简单实现 micro_template_compile
BASH 文本模版的简单实现 micro_template_compile
详细代码
############################### # # Funciton: micro_template_compile # # Parameter: # [1] => template :String # [2..n] => values for placeholder as key=value # # Example: # <- micro_template_compile ‘{code: {{error.code}}, message: "{{error.message}}"}‘ "error.code=127" "error.message=command not found." # --- # -> { code: 0, message: "" } ############################### function micro_template_compile() { template_string="$1"; shift; expression="" while [ $# -ne 0 ]; do key=$(echo "$1" | sed ‘s~^\([^=]*\)=\(.*\)$~\1~g‘) value=http://www.mamicode.com/$(echo"$1" | sed ‘s~^\([^=]*\)=\(.*\)$~\2~g‘) expression="s~{{$key}}~$value~g;$expression" shift; done echo "$template_string" | sed "$expression" }
使用案例
运行
micro_template_compile ‘Hi {{name}}, it is {{date}} today and {{weather}} outside. :) message to you: {{message}}‘ name=‘小王‘ date="$(date +"%Y/%m/%d")" weather="大晴天儿" message="咱们出去钓鱼吧。"
输出
Hi 小王, it is 2014/06/16 today and 大晴天儿 outside. :) message to you: 咱们出去钓鱼吧!
使用到脚本中:
#!/bin/bash # # Usage: $exename [options] -in templatefile key=value ... # # Examples: # $exename -in ./1.txt.template -out ./1.txt f1=v1 f2=v2 f3=v3 # $exename -help # ############################### # # Funciton: micro_template_compile # # Parameter: # [1] => template :String # [2..n] => values for placeholder as key=value # # Example: # <- micro_template_compile ‘{code: {{error.code}}, message: "{{error.message}}"}‘ "error.code=127" "error.message=command not found." # --- # -> { code: 0, message: "" } ############################### function micro_template_compile() { local template_string="$1"; shift; local expression="" local key="" local value="" while [ $# -ne 0 ]; do key=$(echo "$1" | sed ‘s~^\([^=]*\)=\(.*\)$~\1~g‘) value=http://www.mamicode.com/$(echo"$1" | sed ‘s~^\([^=]*\)=\(.*\)$~\2~g‘) expression="s~{{$key}}~$value~g;$expression" shift; done echo "$template_string" | sed "$expression" } main() { template="$(cat "$arg_in")" eval "micro_template_compile ‘$template‘ $arg_datagroup > ‘$arg_out‘" return 0 } processargs() { # defaults: arg_in="" arg_out="stdout" arg_datagroup="" # arguments: while echo "$1" | grep "^-" >/dev/null 2>&1; do case "$1" in -in) arg_in="$2"; shift; ;; -out) arg_out="$2"; shift; ;; esac shift done while [ $# -ne 0 ]; do arg_datagroup="$arg_datagroup \"$1\""; shift; done # exports export arg_in arg_out arg_datagroup } processargs "$@" echo "" echo "arg_in=|$arg_in|" echo "arg_out=|$arg_out|" echo "arg_datagroup=|$arg_datagroup|" echo "" main
BASH 文本模版的简单实现 micro_template_compile
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。