当前位置:网站首页>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 ]
边栏推荐
- UI遍历的初步尝试
- 【kali-密码攻击】(5.1.2)密码在线破解:Medusa
- Solidity最强对手:MOVE语言及新公链崛起
- Shader Graph学习各种特效案例
- 365 days challenge LeetCode1000 questions - Day 052 Step by step summation to get the minimum value of positive numbers Greedy
- 使用 GoogleTest 框架对 C 代码进行单元测试
- How to turn off system protection in Win11?How to turn off the system protection restore function?
- -红与黑-
- ITK编译remote库
- 【LeetCode】求根节点到叶节点数字之和
猜你喜欢
随机推荐
Xi'an biotin-tetrapolyethylene glycol-amide-4phenol light yellow semi-solid
hint: Updates were rejected because the tip of your current branch is behind hint: its remote counte
3438. 数制转换
初步认识对象
PEG derivative Biotin-PEG1-OH (cas: 95611-10-2, 2-biotinaminoethanol) advantage description
Aptos 深度解读:机遇、挑战与风险
assert利用蚁剑登录
为什么字符串一旦创建就不可以改变?
头脑风暴:单词拆分
CAS:851113-28-5 (Biotin-ahx-ahx-tyramine)
-采花生-
【kali-密码攻击】(5.2.1)密码分析:Hash Identifier(哈希识别)
R语言使用glm函数构建logistic回归模型,使用forestmodel包的forest_model函数可视化逻辑回归模型对应的森林图
开发IM即时通讯容易吗?需要什么技术
-象棋比赛-
Problems and solutions related to Chinese character set in file operations in ABAP
Not, even the volume of the king to write code in the company are copying and pasting it reasonable?
【报错】ModuleNotFoundError: No module named ‘paramiko‘
-Knight Parade-
egg.js中Class constructor BaseContextClass cannot be invoked without ‘new‘解决方法



![[LeetCode] Find the sum of the numbers from the root node to the leaf node](/img/1c/6c627e17a60f424601226504f4ff36.png)





