网站维护建设招标,做seo网站优化多少钱,天津网,南昌网站设计专业getopt 长选项 短选项 可选参数whilecaseifbasename函数变量shiftread
实现功能描述#xff1a;
1. 实现可选参数传入 -c 或 --clearBuild。
2. 用shell脚本来实现选择#xff0c;make时是否clean。
3. 可以打印用法帮助 和 作者信息。
#!/bin/bash# sh函数定义 *******…getopt 长选项 短选项 可选参数whilecaseifbasename函数变量shiftread
实现功能描述
1. 实现可选参数传入 -c 或 --clearBuild。
2. 用shell脚本来实现选择make时是否clean。
3. 可以打印用法帮助 和 作者信息。
#!/bin/bash# sh函数定义 ***************************
usage()
{sh_name$(basename $1);# sh_namebasename $1; #或者这个echo ---------------用法 $sh_name [选项] (可选) -c (可选) --clearBuild 命令行选项-c 或 --clearBuild 默认: 0表示是否清除make build的内容数值为1表示清理为0表示直接构建可选选项-h 或 --help 打印帮助信息-a 或 --author 打印作者信息---------------exit 1;
}
author()
{sh_name$(basename $1);# sh_namebasename $1; #或者这个
echo ---------------脚本 $sh_name 作者 WJH ---------------exit 1;
}fun1_make()
{if [ $1 clear ] ; then# echo 执行清理并构建文件;echo in fun1_make(): 先clean 然后 make;# your cmd .....else# echo 不清除已经构建好的文件echo in fun1_make(): 直接make# your cmd .....fi
}# sh变量定义与接收 *************************** # 输入指令
parameters$(getopt -a -o c::ha -l clearBuild::,help,author -n $0 -- $)
# echo 原始参数origin param is $if [ $? ! 0 ]; thenecho 脚本解析失败...; exit 1;
fi
# set命令将规范化后的命令参数分配到位置参数 $1 $2上面
eval set -- ${parameters}
# echo 规范后参数formatetd parameters[$]# sh识别输入的选项·参数 ***************************
while true;
docase $1 in-c | --clearBuild)case $2 in) echo 选项 --clearBuild 无参数; clearBuild${clearBuild:1}; #赋默认值shift 2; # 可选参数仍有空参数需要shift 2, ;;*) echo 选项 --clearBuild 参数为$2; clearBuild$2; shift 2;;;esac;;-h|--help)usage $0 ;;;-a|--author)author $0 ;;;--)echo clearBuild 默认值 1, clearBuild 现在数值$clearBuild; # 默认值见 68行echo -----------------; shift 1; break; ;;*)echo Internal error!!!; exit 1 ;;;esac
done# sh业务逻辑 *************************** # 比较字符串是否相等用 并在两边留空格
# 比较数字用 -eq -gt -lt 等分别为 equal; greater than; less than;等
if [ $clearBuild 1 ] ; then # 输入了 选项时 或 可选参数时 echo 执行清理,然后构建;fun1_make clear;# your cmd .....elif [ $clearBuild 0 ] ; then # 输入了 选项时 或 可选参数时 echo 直接构建fun1_make direct_build;# your cmd ..... else # 未输入 选项时 read -p 未输入 选项时:输入clear 确认清除并重新构建; 输入不为clear,直接构建 : tmp2if [ $tmp2 clear ] ; thenecho 执行清理,然后构建;fun1_make $tmp2;# your cmd ..... else echo 直接构建fun1_make $tmp2;# your cmd .....fifiecho -----------------;
参考文章
1.设计shell脚本选项getopt - 骏马金龙 - 博客园 (cnblogs.com)
2.081_扩展篇_Shell编程七_函数二_自定义函数_哔哩哔哩_bilibili
3.Linux——shell脚本的传参方式 - moutory - 博客园 (cnblogs.com)