careone1949
deepin
2013-10-05 03:38 接 1 楼
程序代码Copy the Code
程序代码
- #! /bin/bash
- ## coding: utf-8
- ## translate Emacs/XEmacs menu to other languages
- ## updated by Careone , 2013-10-04
- VERSION='2.12'
- # Usage: usage
- # Print the usage.
- usage () {
- cat <Usage: $0 [OPTION]
- toggle $NAMEU menu to special language, for current user or global.
- You also can translate $NAMEU menu to special language(s) if translate
- scripts existed. Please run '$0 -d' for translate/develop options.
- -V, --version print the version information and exit
- -h, --help print this message and exit
- Translate and develop related options
- usage: $0 -l LANGUAGE -v VERSION
- examples: $0 -l zh_CN -v 24.1
- $0 -l zh_CN -v 24.1 24.2
- $0 -l zh_CN zh_TW -v 24.1 24.2
- -gl [LANGUAGE_1 LANGUAGE_2 ...] (root please!)
- with -v, (Global) translate $NAMEU lisp/*/*.el files to special
- version(s). If no VERSION given, try probe current $NAMEU version
- installed instead.
- -l [LANGUAGE_1 LANGUAGE_2 ...]
- with -v, translate $NAMEU lisp/*/*.el files to special language(s)
- -v [VERSION1 VERSION2 ...]
- with -gl or -l, translate $NAMEU lisp/*/*.el files to special version(s). If
- no VERSION given, try probe current $NAMEU version installed instead.
- !!! NOTICE !!!
- * option '-l':
- translated .el files save to ~/$TRANSOF/usr/share/$NAMEL/... and
- apply to current user only
- * option '-gl': (root please!)
- translated .el files save to /usr/share/$NAMEL/... and apply to ALL
- USERS. If you just want to test your translations, please use option
- '-l' instead!
- EOF
- }
- ###
- # tag 2000
- ## PART 2: main
- # Check the arguments.
- for option in "$@"; do
- case "$option" in
- -h | --help)
- usage
- exit 0 ;;
- ## todo -------------------------
- -gl | -l | -v)
- declare -a ARRAY_GL
- declare -a ARRAY_L
- declare -a ARRAY_V
- declare -a ARG
- ## 2013-09-20
- #ARGS="$@"
- case "$1" in
- -gl)
- shift
- unset ARG[@] #init array to null
- ARG=( `echo -n "$@" | sed "s/ -/\n -/" | head -1` )
- if [ "${#ARG[@]}" -ge 1 ];then
- # if argument like "-gl -gl zh_CN", throw the first -gl
- case "${ARG[0]}" in
- --* | -*): ;;
- *)
- if [ "${#ARRAY_GL[@]}" -ge 1 ];then
- ARRAY_GL=( "${ARRAY_GL[@]}" "${ARG[@]}" )
- else ARRAY_GL=( "${ARG[@]}" )
- fi
- shift "${#ARG[@]}"
- # echo "ARRAY_GL = '${ARRAY_GL[@]}'"
- esac
- fi
- continue
- ;;
- -l)
- shift
- unset ARG[@] #init array to null
- ARG=`echo -n "$@" | sed "s/ -/\n -/" | head -1`
- if [ "${#ARG[@]}" -ge 1 ];then
- # if argument like "-l -l zh_CN", throw the first -l
- case "${ARG[0]}" in
- --* | -*): ;;
- *)
- if [ "${#ARG[@]}" -ge 1 ];then
- if [ "${#ARRAY_L[@]}" -ge 1 ];then
- ARRAY_L=( "${ARRAY_L[@]}" "${ARG[@]}" )
- else ARRAY_L=( "${ARG[@]}" )
- fi
- shift "${#ARG[@]}"
- fi
- # echo "ARRAY_L = '${ARRAY_L[@]}'"
- esac
- fi
- continue
- ;;
- -v)
- shift
- unset ARG[@] #init array to null
- ARG=`echo -n "$@" | sed "s/ -/\n -/" | head -1`
- if [ "${#ARG[@]}" -ge 1 ];then
- # if argument like "-v -v 24", throw the first -v
- case "${ARG[0]}" in
- --* | -*): ;;
- *)
- if [ "${#ARG[@]}" -ge 1 ];then
- if [ "${#ARRAY_V[@]}" -ge 1 ];then
- ARRAY_V=( "${ARRAY_V[@]}" "${ARG[@]}" )
- else ARRAY_V=( "${ARG[@]}" )
- fi
- shift "${#ARG[@]}"
- fi
- # echo "ARRAY_V = '${ARRAY_V[@]}'"
- esac
- fi
- continue
- ;;
- -*):
- shift; continue
- ;;
- esac
- # Case of "-gl | -l | -v)" end
- ;;
- ##--------------------------
- -*)
- echo "Unrecognized option \`$option'" 1>&2
- #exit 1
- ;;
- esac
- done
- # ,FUZZY
- ##--------------------------
- echo
- echo "----"
- echo "ARRAY_GL = '${ARRAY_GL[@]}'"
- echo "ARRAY_L = '${ARRAY_L[@]}'"
- echo "ARRAY_V = '${ARRAY_V[@]}'"
- exit 0;
- #
- # -gl gl1 gl2 gl3 -v v10 v11 -l l1 l2 -l l2 -l l3 -gl gl2 -v v21 gl
- ### output:
- #----
- # ARRAY_GL = 'gl1 gl2 gl3'
- # ARRAY_L = ''
- # ARRAY_V = 'v10 v11'
Reply Like 0 View the author
调试时发现有时能正确提取参数,但有时出现异常.
运行环境:
Ubuntu 10.04.3 i386
GNU bash, version 4.1.5(1)-release
示例代码如下:
命令行
输出如下(输出结果有误,-l 选项的参数未能正确提取)
有劳哪位高手指点一下,多谢!