shell--传入参数的处理

本文详细介绍了在Shell脚本中处理传入参数的方法,包括 $#, $*, $$, $@ 等特殊变量的用法,以及手工处理、getopts和getopt命令的使用。通过示例展示了如何解析短选项、长选项和参数,帮助读者掌握Shell脚本处理命令行参数的技巧。" 117665545,7417320,SMARTS系统登录与管理指南,"['系统管理', '身份验证', '用户体验', '权限控制']
摘要由CSDN通过智能技术生成

 
参数处理-Shell传入参数的处理
1. $# 传递到脚本的参数个数
2. $* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
3. $$ 脚本运行的当前进程ID号
4. $! 后台运行的最后一个进程的进程ID号
5. $@ 与$#相同,但是使用时加引号,并在引号中返回每个参数
6. $- 显示shell使用的当前选项,与set命令功能相同
7. $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
变量 含义
$0 脚本名字
$1 位置参数 #1
$2 - $9 位置参数 #2 - #9
${10} 位置参数 #10
$# 位置参数的个数
"$*" 所有的位置参数(作为单个字符串) *
"$@" 所有的位置参数(每个都作为独立的字符串)
${#*} 传递到脚本中的命令行参数的个数
${#@} 传递到脚本中的命令行参数的个数
$? 返回值
$$ 脚本的进程ID(PID)
$- 传递到脚本中的标志(使用set)
$_ 之前命令的最后一个参数
$! 运行在后台的最后一个作业的进程ID(PID)


       使用shell处理的时候对参数的处理是个基本模块,所以今天找到一篇简单易懂的文章来进行参考,作为以后shell参数处理的模板,推荐使用getOpts形式进行参数的处理。

0.引言

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

   选项与参数:

   如下一个命令行:

./test.sh -f config.conf -v --prefix=/home

   我们称-f为选项,它需要一个参数,即config.conf, -v 也是一个选项,但它不需要参数。

   --prefix我们称之为一个长选项,即选项本身多于一个字符,它也需要一个参数,用等号连接,当然等号不是必须的,/home可以直接写在--prefix后面,即--prefix/home,更多的限制后面具体会讲到。
   在bash中,可以用以下三种方式来处理命令行参数,每种方式都有自己的应用场景。

    * 手工处理方式
    * getopts
    * getopt

   下面我们依次讨论这三种处理方式。

1. 手工处理方式

   在手工处理方式中,首先要知道几个变量,还是以上面的命令行为例:

    *    $0 : ./test.sh,即命令本身,相当于C/C++中的argv[0]
    *    $1 : -f,第一个参数.
    *    $2 : config.conf
    *    $3, $4 ... :类推。
    *    $# 参数的个数,不包括命令本身,上例中$#为4.<

  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值