阶段总结 ———— linux shell 处理命令行参数
2014-07-24 21:05
351 查看
还是之前项目要写脚本,涉及到mysql操作,要处理命令行,本来是用C写了个小工具,
但是最后发现还是没有shell方便,到底是一行shell顶200行C代码呀。
linux shell里面的命令行处理和C里面的处理差不多,都是getopt之类的;
下面有个简单的小例子:
时间不早啦,有空再详细的解释这个玩意儿吧
但是最后发现还是没有shell方便,到底是一行shell顶200行C代码呀。
linux shell里面的命令行处理和C里面的处理差不多,都是getopt之类的;
下面有个简单的小例子:
#!/bin/bash GET_MY_OPTION="" OPTION_COUNT="0" ARG_COUNT=$# FLAG_HELP="0" FLAG_USER="0" FLAG_PRINTF="0" USER_NAME="" PRINTF_STR="" function showHelpInfo() { echo "usage:" echo "-h --help show help information" echo "-u --user [username] user name" echo "-p --printf [string] printf a string on screen" echo "" echo "example:" echo "show help information: " echo " ./testGetOpt.sh -h" echo "printf a string on screen for a specified user:" echo " ./testGetOpt.sh -u 'Benjamin Xu' -p 'Hello!' " echo "" } function printfStr() { echo "" echo "${PRINTF_STR} ${USER_NAME}" echo "" } if [ -z "$*" ];then showHelpInfo; exit 1; fi { GET_MY_OPTION='getopt -o hu:p: -l help,user:printf: -n ${0##*/} --"$@"' while [[ $# -gt 0 ]] do case "$1" in -h|--help) FLAG_HELP="1" ;; -u|--user) USER_NAME="$2" shift if [ "${USER_NAME}" ];then FLAG_USER="1" fi ;; -p|--printf) PRINTF_STR="$2" shift if [ "${PRINTF_STR}" ];then FLAG_PRINTF="1" fi ;; *) echo "Invalid Option: $1"; break ;; esac shift done } OPTION_COUNT=$[${FLAG_HELP}+${FLAG_USER}+${FLAG_PRINTF}] echo "FLAG_HELP ${FLAG_HELP}" echo "FLAG_USER ${FLAG_USER}" echo "FLAG_PRINTF ${FLAG_PRINTF}" echo "OPTION_COUNT ${OPTION_COUNT}" echo "ARG_COUNT ${ARG_COUNT}" if [[ ${OPTION_COUNT} -eq "1" ]] && [ ${ARG_COUNT} -eq "1" ] && [ ${FLAG_HELP} -eq "1" ];then showHelpInfo; exit 0; elif [ ${OPTION_COUNT} -eq "2" ] && [ ${ARG_COUNT} -eq "4" ] && [ ${FLAG_USER} -eq "1" ] && [ ${FLAG_PRINTF} -eq "1" ];then printfStr; exit 0; else echo "Argument Mismatched!" echo "eg: ./testGetOpt.sh -h" exit 1; fi
时间不早啦,有空再详细的解释这个玩意儿吧
相关文章推荐
- 阶段总结 ———— linux shell 计算MD5并用base64处理
- 阶段总结 ———— linux shell 判断mysql数据库密码是否为空、是否正确
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核
- 购物网第四阶段总结笔记3:订单后期处理页面
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇三:批量处理后的txt文件入库处理
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇三:批量处理后的txt文件入库处理
- 阶段总结 ———— linux shell 解析ini配置文件
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核
- 图像处理中小球的识别(简单总结)
- STL学习阶段总结
- 优化较大数据量的处理效率的收获(总结,疑问)
- SQL日志文件总结及日志满的处理[转载]
- javascript,ASP.net页面跳转处理总结- -
- 链表处理函数(自己总结)
- 毕设阶段总结
- perl文本处理总结[2]
- 阶段总结之一
- 想做个阶段总结,但却发现这篇文章《中国商人的100个错误》
- 短信读取软件的开发阶段总结(二)