关于Shell中的位置参数变量

一、位置参数

     位置参数是一种在调用Shell程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数,它们分别标识了用户输入的整个命令行中以空格分隔开的字符串,其中,$1标识第一个位置的参数,$2标识第二个,以此类推。
其中,$0是一个特殊的变量,它的内容是当前这个Shell程序的文件名,所以,它不是一个位置参数,在显示当前所有的位置参数时是不包括在内的。
位置参数的值可以用$N得到,N是一个数字,如果为1即$1,类似C语言中的数组,Linux会把输入的字符串分段并给每段进行编号,编号从0开始,第0号为程序名字,从1开始就表示传递给程序的参数。
特殊变量$*和$@表示所有的位置参数。

二、内部参数

上述过程中的$0是一个内部参数,它是必须的,而$1则可有可无。和$0一样的内部变量还有以下几个:

$# —— 传递给程序的总的参数数目。
$? —— 上一个代码或者Shell程序在Shell中退出的情况,如果正常退出则返回0,否则返回非0值。
$* —— 传递给程序的所有参数组成的字符串。
$n ——表示第n个参数,$1则表示第一个参数,$2表示第二个参数……
$0 —— 当前程序的名称。
$@ ——以“参数1”、“参数2”……保存所有的参数。
$$ —— 本程序的(进程ID)PID。
$! —— 上一个命令的PID。

下面的一个shell程序,演示了位置参数变量的使用:

     使用下面的参数调用这个程序:
   
常规情况下位置参数变量可以标识9个参数。如果参数变量超过9个,在标准情况下,第九个及其以后的参数将作为一个字符串赋给$9变量。例如:
这个脚本程序运行的过程中,$9变量所代表的值将是“9 f1 f2”这个字符串。那么如何把9.f1.f2这三个变量分离出来呢?Shell提供了shift命令来完成这个工作。
Shift命令把参数列表向前移动一位,即每次运行一次shift命令,第一个参数就被挤掉,而后面的参数依次前移一个位置。如修改 sharg.sh脚本文件为:
然后运行:
上图运行结果显示可知,当运行了两次shift命令后,$2的值由f2替代了90,即参数列表依次前移了两位。通过这样的方法,即可获得多于9个的参数传递值。



  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值