手工处理方式能满足大多数的简单需求,配合shift使用也能构造出强大的功能,但在要处理复杂选项的时候建议用下面的两种方法。 2. getopts/getopt 处理命令行参数是一个相似而又复杂的事情,为此,C提供了getopt/getopt_long等函数, C++的boost提供了Options库,在shell中,处理此事的是getopts和getopt. getopts和getopt功能相...
2. getopts/getopt 处理命令行参数是一个相似而又复杂的事情,为此,C提供了getopt/getopt_long等函数, C++的boost提供了Options库,在shell中,处理此事的是getopts和getopt. getopts和getopt功能相似但又不完全相同,其中getopt是独立的可执行文件,而getopts是由Bash内置的。 先来看看参数传递的典型用法: * ./test.sh ...
1. getopts是bash内建命令的, 而getopt是外部命令 2. getopts不支持长选项, 比如: --date 3. 在使用getopt的时候, 每处理完一个位置参数后都需要自己shift来跳到下一个位置, getopts只需要在最后使用shift $(($OPTIND - 1))来跳到parameter的位置。 4. 使用getopt时, 在命令行输入的位置参数是什么, 在ge...
The remaining arguments to be processed: 85 执行shift 命令后,getopts 处理后,$@ 变量保存了剩余的命令行参数。 在这种情况下,参数列表($@)有效地变成了 = (85),这可以在 getopts 循环外进一步处理。 错误处理 在shell 脚本中使用 getopts,如果它遇到一个意外的选项,或者如果它找不到一个预期的选项值,它将...
1. getopts是bash内建命令的, 而getopt是外部命令 2. getopts不支持长选项, 比如: --date 3. 在使用getopt的时候, 每处理完一个位置参数后都需要自己shift来跳到下一个位置, getopts只需要在最后使用shift $(($OPTIND - 1))来跳到parameter的位置。
echo "Remaining arguments: $@" 遇到的问题及解决方法 问题:getopts报告无效选项错误。 原因:用户提供了脚本不支持的选项。 解决方法: 确保在getopts的调用中包含了所有支持的选项字符。 检查用户输入的选项是否正确,并提供适当的帮助信息。 问题:getopts报告选项需要参数但未提供。
getopts和getopt功能相似但又不完全相同,其中getopt是独立的可执行文件,而getopts是由Bash内置的。 先来看看参数传递的典型用法: * ./test.sh -a -b -c : 短选项,各选项不需参数 * ./test.sh -abc : 短选项,和上一种方法的效果一样,只是将所有的选项写在一起。
echo"Remaining arguments:" forargdo echo'-->'"\`$arg'"; done 比如我们使用 ./test -a -b arg arg1 -c 你可以看到,命令行中多了个arg1参数,在经过getopt和set之后,命令行会变为: -a -b arg -c -- arg1 $1指向-a,$2指向-b,$3指向arg,$4指向-c,$5指向--,而多出的arg1则被放到了最后...
echo "Remaining arguments:" for arg do echo '--> '"\`$arg'" ; done 比如我们使用 ./test -a -b arg arg1 -c 你可以看到,命令行中多了个arg1参数,在经过getopt和set之后,命令行会变为: -a -b arg -c – arg1 $1指向-a,$2指向-b,$3指向arg,$4指向-c,$5指向–,而多出的arg1则被放...
在bash中,可以⽤以下三种⽅式来处理命令⾏参数,每种⽅式都有⾃⼰的应⽤场景。* ⼿⼯处理⽅式 * getopts * getopt 下⾯我们依次讨论这三种处理⽅式。1. ⼿⼯处理⽅式 在⼿⼯处理⽅式中,⾸先要知道⼏个变量,还是以上⾯的命令⾏为例:* $0 : ./test.sh,即命令...