当前位置:网站首页>The shell specifies the parameter name to pass the parameter
The shell specifies the parameter name to pass the parameter
2022-08-10 02:13:00 【Yang Linwei】
如果使用shellSpecify the parameter name to pass the parameter,是使用到了“getopts”命令,下面举个例子,定义入参(-n NAME and -t TIMES.
)并获取参数,Contains comments:
#!/bin/bash
# 1. Define the parameter variable name
NAME="" # Name of person to greet.
TIMES=1 # Number of greetings to give.
# 2. 用法提示
usage() {
# Function: Print a help message.
echo "Usage: $0 [ -n NAME ] [ -t TIMES ]" 1>&2
}
exit_abnormal() {
# Function: Exit with error.
usage
exit 1
}
# 3. whileThe loop sets the variable name into the definition,And verify the validity of the parameters
while getopts ":n:t:" options; do # Loop: Get the next option;
# use silent error checking;
# options n and t take arguments.
case "${options}" in #
n) # If the option is n,
NAME=${OPTARG} # set $NAME to specified value.
;;
t) # If the option is t,
TIMES=${OPTARG} # Set $TIMES to specified value.
re_isanum='^[0-9]+$' # Regex: match whole numbers only
if ! [[ $TIMES =~ $re_isanum ]] ; then # if $TIMES not whole:
echo "Error: TIMES must be a positive, whole number."
exit_abnormal
exit 1
elif [ $TIMES -eq "0" ]; then # If it's zero:
echo "Error: TIMES must be greater than zero."
exit_abnormal # Exit abnormally.
fi
;;
:) # If expected argument omitted:
echo "Error: -${OPTARG} requires an argument."
exit_abnormal # Exit abnormally.
;;
*) # If unknown (any other) option:
exit_abnormal # Exit abnormally.
;;
esac
done
# 4. Use the defined variable name
if [ "$NAME" = "" ]; then # If $NAME is an empty string,
STRING="Hi!" # our greeting is just "Hi!"
else # Otherwise,
STRING="Hi, $NAME!" # it is "Hi, (name)!"
fi
COUNT=1 # A counter.
while [ $COUNT -le $TIMES ]; do # While counter is less than
# or equal to $TIMES,
echo $STRING # print a greeting,
let COUNT+=1 # then increment the counter.
done
exit 0
运行结果:
./greeting
Hi!
-----
./greeting -n Dave
Hi, Dave!
-----
./greeting -t 3
Hi!
Hi!
Hi!
-----
./greeting -t 4 -n Betty
Hi, Betty!
Hi, Betty!
Hi, Betty!
Hi, Betty!
------
./greeting -n
Error: -n requires an argument.
Usage: ./greeting [ -n NAME ] [ -t TIMES ]
------
./greeting -t
Error: -t requires an argument.
Usage: ./greeting [ -n NAME ] [ -t TIMES ]
------
./greeting -t 0
Error: TIMES must be greater than zero.
Usage: ./greeting [ -n NAME ] [ -t TIMES ]
边栏推荐
- 什么是持续测试?
- -采花生-
- 破产企业的职工退休怎么办?
- Quick responsiveness intelligent/smart responsiveness of polyethylene glycol type nano/reduction response hydrogels research and preparation
- 删除表空间数据文件
- -红与黑-
- 使用 apxs 构建和安装 Apache 扩展共享对象模块
- R语言使用coxph函数构建生存分析回归模型,使用forestmodel包的forest_model函数可视化生存回归模型对应的森林图
- hint: Updates were rejected because the tip of your current branch is behind hint: its remote counte
- Solidity最强对手:MOVE语言及新公链崛起
猜你喜欢
基于Web的疫情隔离区订餐系统
Shader Graph学习各种特效案例
Pagoda measurement - building LightPicture open source map bed system
C# 四舍五入 MidpointRounding.AwayFromZero
防勒索病毒现状分析
Involved in PEG-Biotin (CAS: 1778736-18-7) Biotin-PEG4-OH is widely used in molecular target detection
Experimental support for decorators may change in future releases.Set the "experimentalDecorators" option in "tsconfig" or "jsconfig" to remove this warning
小程序中计算距离信息
D-Biotinol Involved by Biotin, CAS No: 53906-36-8 Specific Properties Description
365 days challenge LeetCode1000 questions - Day 052 Step by step summation to get the minimum value of positive numbers Greedy
随机推荐
-向量点积-
DHCP——动态主机配置协议
Pyscript,创建一个能执行crud操作的网页应用
基于设计稿识别的可视化低代码系统实践
【kali-密码攻击】(5.2.1)密码分析:Hash Identifier(哈希识别)
阿里云混合云管理平台多Region架构
【报错】ModuleNotFoundError: No module named ‘scp‘
这一次,话筒给你:向自由软件之父 Richard M. Stallman 提问啦!
unity 报错 Unsafe code may only appear if compiling with /unsafe. Enable “Allow ‘unsafe‘ code“ in Pla
ITK编译remote库
你有对象类,我有结构体,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang结构体(struct)的使用EP06
R语言使用glm函数构建logistic回归模型,使用forestmodel包的forest_model函数可视化逻辑回归模型对应的森林图
使用 apxs 构建和安装 Apache 扩展共享对象模块
Entity FrameWork Core教程,从基础应用到原理实战
02| operator
365 days challenge LeetCode1000 questions - Day 052 Step by step summation to get the minimum value of positive numbers Greedy
芯片资讯|半导体收入增长预计将放缓至 7%,蓝牙芯片需求依然稳步增长
color socks problem
【软考软件评测师】软件测试基础知识
Sikuli 基于图形识别的自动化测试技术