读书人

Bash Shell中命令行选项/参数处置

发布时间: 2012-08-10 12:19:33 作者: rapoo

Bash Shell中命令行选项/参数处理

转载自:http://www.cnblogs.com/FrankTan/archive/2010/03/01/1634516.html

?

Bash Shell中命令行选项/参数处理

0.引言


?? 写程序的时候经常要处理命令行参数,本文描述在Bash下的命令行处理方式。

?? 选项与参数:

?? 如下一个命令行:

?

?


执行./test.sh -f config.conf -n 10 会打印:

-f config.conf -n 10??? #这是"$*"的输出

-f?? #以下为$@的输出

config.conf

-n

10

?

?? 所以,手工处理的方式即对这些变量的处理。因为手工处理高度依赖于你在命令行上所传参数的位置,所以一般都只用来处理较简单的参数。如

?? ./test.sh 10

?? 而很少使用./test -n 10这种带选项的方式。 典型用法为:

?



现在就可以使用:
./test.sh -a arg -b -c

./test.sh -a arg -bc
来加载了。
应该说绝大多数脚本使用该函数就可以了,如果需要支持长选项以及可选参数,那么就需要使用getopt.
下面是getopt自带的一个例子:

?



比如我们使用

./test -a  -b arg arg1 -c 
?


你可以看到,命令行中多了个arg1参数,在经过getopt和set之后,命令行会变为:
-a -b arg -c -- arg1
$1指向-a,$2指向-b,$3指向arg,$4指向-c,$5指向--,而多出的arg1则被放到了最后。

3.总结

一般小脚本手工处理也许就够了,getopts能处理绝大多数的情况,getopt较复杂,功能也更强大。
有问题请指出,不胜感激。

读书人网 >操作系统

热点推荐