码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2015-05-11 14:47:16      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:shell   linux   面试题   bash   

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

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

标签:shell   linux   面试题   bash   

原文地址:http://blog.csdn.net/u014082714/article/details/45643823

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!