电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 冲浪宝典-> 局域网
在bourneshellscript里要怎么找出最后一个参数?_shell教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
由 
        Martin Weitzel <@mikros.systemware.de:martin@mwtech.uucp> 
        Maarten Litmaath  
提供的答案: 

若你能确定参数不会超过九个的话,可用: 

        eval last=\${$#} 

在符合 POSIX 标准的 shell 里,不管有多少个参数都可用上述的方法。 

底下方法是一定有用的: 

        for last 
        do 
                : 
        done 

更一般性的做法是: 

        for i 
        do 
                third_last=$second_last 
                second_last=$last 
                last=$i 
        done 

若你想做的是将最后一个参数去除或是将一堆参数的顺序反过来或是取用 
第 N 个参数。底下是一个不用造出 subprocess 只用 shell 组建功能的 
做法: 

        t0= u0= rest=1 2 3 4 5 6 7 8 9 argv= 

        for h in  $rest 
        do 
                for t in "$t0" $rest 
                do 
                        for u in $u0 $rest 
                        do 
                                case $# in 
                                0) 
                                        break 3 
                                esac 
                                eval argv$h$t$u=\$1 
                                argv="$argv \"\$argv$h$t$u\""   # (1) 
                                shift 
                        done 
                        u0=0 
                done 
                t0=0 
        done 

 now restore the arguments 
val set x "$argv"                                      # (2) 
hift 

这个例子可以用到 999 个参数,应该够用了吧?仔细看看(1)与(2)标示的 
地方,想办法说服你自己不管参数里面有什么奇怪的字元这两行都不会出 
差错。 

要找第 N 个参数,用: 

        eval argN=\$argv$N 

要将参数的顺序反过来,标示为(1)的那一行必须改成 

        argv="\"\$argv$h$t$u\" $argv" 

自己练习最后一个参数去除的方法。 

若允许呼叫外部指令这类造出 subprocess 的做法,代志就更好办了。 
底下是找出 argvN: 

        N=1 

        for i 
        do 
                eval argv$N=\$i 
                N=`expr $N   1` 
        done 

要将参数的顺序反过来还有一个不用造出 subprocess,有更简单的方法。 
这个方法也可以用来去除最后一个参数, 不过要注意的是 argvN 不在是 
原来的第 N 个参数: 

        argv= 

        for i 
        do 
                eval argv$#=\$i 
                argv="\"\$argv$#\" $argv" 
                shift 
        done 

        eval set x "$argv" 
        shift

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·新手学习之局域网中代理设置_局域网教程
·局域网优化的六大秘技_局域网教程
·在小型局域网中用w2k共享上网_局域网教程
·局域网内轻松玩转远程协助_局域网教程
·轻松实现adsl宽带多机共享_局域网教程
·巧用ccproxy 解决服务器无法上网问题_局域网教程
·正确设置adsl modem nat 让网络应用无局限_局域网教程
·查看一个顶级域名下所有的二级域名_局域网教程
·给网络体检:局域网链路的连通性测试_局域网教程
·两则控制技巧 让局域网上网更高效_局域网教程

最新文章
·解决局域网遭遇盗用mac地址上网的问题_局域网教程
·完美测试tcp/ip协议简介_局域网教程
·网络与路由器故障诊断基础知识_局域网教程
·photoshop简单几步打造梦幻仙境_photoshop教程
·局域网内共用电视卡方法_局域网教程
·局域网用户的限制和反限制_局域网教程
·photoshop超强磨皮:将斑点选出来!_photoshop教程
·windows vista局域网网络连接设置_局域网教程
·photoshop绘制怀旧风格红玫瑰_photoshop教程
·photoshop抠玻璃杯十步教程_photoshop教程


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号