首页 > 开发 > linux > 正文

Shell脚本怎么通过 参数名 参数值 传参

2017-09-11 20:33:52  来源: 网友分享

Linux的参数好多都是可以通过参数名空格参数值这种方式传参的,比如

find . -name *.php

我自己写的Shell脚本,也想通过这种方式传参,怎么处理呢?
貌似Shell不提供这种方式,只能通过 $数字 的方式

解决方案

如@Yang Fang的答案,你可以自行解析$@参数实现解析。但是实际情况比这复杂。比如说,如果我需要一个-name test的带参数选项,直接遍历$@的代码就很复杂了。

正常一点的解决方案是用bash的built-in getopts或者命令getopt(注意这俩名字不一样)。

提问者如果翻墙的话可以去这里看我写的一篇日志 http://yegle.net/2011/04/21/parsing-n...

我把里面的样例代码贴这里。你可以将这部分代码保存成脚本然后执行之测试效果

# getopts :s:h表示这个命令接受2个带参数选项,分别是-h和-swhile getopts :s:h optdo      case $opt in        s)              echo "-s=$OPTARG"            ;;        :)            echo "-$OPTARG needs an argument"            ;;        h)              echo "-h is set"            ;;        *)              echo "-$opt not recognized"            ;;    esacdone