技术解析

如何判断shell的函数参数是带0个1个或两个'-'符号
0
2021-07-20 03:29:48
idczone
如何判断shell的函数参数是带0个1个或两个'-'符号,比如:

function test() {
if [ $1 == "" ]; then
do something;
fi
}

如果要让函数接受 x -x --x 这三种形式都可以工作,这个参数判断应该怎么写啊?求指教
如果需求很简单的话用这个应该就行:
if [ $1 == "x" ] || [ $1 == "-x" ] || [ $1 == "--x" ]
正经的复杂参数处理应该使用getopts,详细用法需要查查文档。
个人觉得用得最爽的还是Python加命令行处理库argparse或者别的啥。

getopts 功能太简单,不支持长选项, getopt 命令可移植性又不好,所以我觉得像包含了长选项等等比较复杂的命令行选项处理的话,直接交给 ruby/python 等脚本语言来处理吧,别用 shell 写了

ARG_NUM="${#@[@]}"

如果是要涉及到统计 -xx 的个数,顺手写了个工具函数
function test () {
count=0 ;
for arg in "${@[@]}" ; do
[[ "$arg" != "${arg]] && count=$(( $count +1))
done
echo $count
}

getopt或者getopt_long

在学shell脚本,你写的我看晕了

https://github.com/docopt/docopts
谁用谁知道

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服