您好,匿名用户
随意问技术百科期待您的加入

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

0 投票

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

find . -name *.php

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

用户头像 提问 2012年 12月1日 @ Cho'Gath 上等兵 (267 威望)
分享到:

1个回答

0 投票
 
最佳答案

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

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

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

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

# getopts :s:h表示这个命令接受2个带参数选项,分别是-h和-s
while getopts :s:h opt
do  
    case $opt in
        s)  
            echo "-s=$OPTARG"
            ;;
        :)
            echo "-$OPTARG needs an argument"
            ;;
        h)  
            echo "-h is set"
            ;;
        *)  
            echo "-$opt not recognized"
            ;;
    esac
done
用户头像 回复 2012年 12月1日 @ 阿尔托莉雅 下士 (587 威望)
选中 2012年 12月1日 @Cho'Gath
提一个问题:

相关问题

0 投票
1 回复 34 阅读
用户头像 提问 2012年 12月1日 @ Gangplank 上等兵 (314 威望)
0 投票
1 回复 52 阅读
用户头像 提问 2012年 12月1日 @ hacker 上等兵 (362 威望)
0 投票
1 回复 33 阅读
0 投票
1 回复 31 阅读
用户头像 提问 2012年 12月1日 @ Darius 上等兵 (331 威望)
0 投票
1 回复 38 阅读
用户头像 提问 2012年 12月1日 @ Rumble 上等兵 (394 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...