linux中shell变量$#,$@,$0,$1,$2的含义解释

linux中shell变量$#,$@,$0,$1,$2的含义解释: 
变量说明: 
$$ 
Shell本身的PID(ProcessID) 
$! 
Shell最后运行的后台Process的PID 
$? 
最后运行的命令的结束代码(返回值) 
$- 
使用Set命令设定的Flag一览 
$* 
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 
$@ 
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 
$# 
添加到Shell的参数个数 
$0 
Shell本身的文件名 
$1~$n 

添加到Shell的各参数值。$1是第1参数、$2是第2参数…。 

$@和$*都代表所有命令行参数,但是二者是有区别的。

$*将命令行上提供的所有参数当作一个参数来保存,$@将命令行上提供的所有参数当作一个字符串中的多个独立的参数来保存。

通常都是在程序中使用$@,并且用双引号引起来。

*  参数
    扩展为从1开始的位置参数。
    双引号对中的*被扩展为单一的word字,这个字的值是由以第一个IFS字符分隔每个位置参数组成的字符序列。
    即"$*" 扩展为"$1c$2c..", 其中c是IFS值中的第一个字符。
    如果IFS没有定义,那么c为space;如果IFS为空,那么c为空。

    @ 参数
    扩展为从1开始的位置参数。
    双引号对中的@被扩展为多个分开的word字,即"$@" 扩展为"$1" "$2" ...
    如果双引号扩展发生在一个字中,如abc"$@"def,扩展后的第一个字与原始字的开头部分abc相连,扩展后的最后一个字与原始字的后面部分def相连。
    当没有位置参数时,"$@" 和$@扩展为nothing,即它们被移除。

示例:

1 #!/bin/bash
  2 #
  3 printf "The complete list is %s\n"  "$$"
  4 printf "The complete list is %s\n"  "$!"
  5 printf "The complete list is %s\n"  "$?"
  6 printf "The complete list is %s\n"  "$*"
  7 printf "The complete list is %s\n"  "$@"
  8 printf "The complete list is %s\n"  "$#"
  9 printf "The complete list is %s\n"  "$0"
10 printf "The complete list is %s\n"  "$1"
11 printf "The complete list is %s\n"  "$2

结果:

[Aric@localhost ~]$ bash params .sh 123456 QQ
The complete list is  24249
The complete list is
The complete list is  0
The complete list is  123456 QQ
The complete list is  123456
The complete list is  QQ
The complete list is  2
The complete list is  params .sh
The complete list is  123456
The complete list is  QQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值