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

Shell中特殊的变量

时间:2015-07-05 23:42:50      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

$表示当前的进程,当使用echo $$是会输出当前shell的pid

1 echo $$

 

特殊变量列表
变量含义
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

脚本文件varlist.sh

1 #!/bin/bash
2 
3 echo "File name: $0"
4 echo "First parameter: $1"
5 echo "Second Parameter: $2"
6 echo "Quoted Values: $@"
7 echo "Quoted Values: $*"
8 echo "Total Number of Parameter : $#"

执行varlist.sh hello world结果输出如下:

$ sh ./varlist.sh hello world
File name: ./varlist.sh
First parameter: hello
Second Parameter: world
Quoted Values: hello world
Quoted Values: hello world
Total Number of Parameter : 2

$*与$@的区别:

当使用""是会出对于他们存在差异,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。 看下面的例子:

 1 #!/bin/bash
 2 #description: use variable
 3 #Author: blacksonny
 4 #Copyright (c)
 5 #Script follows here:
 6 
 7 echo "\$*=" $*
 8 echo "\"\$*\"=" "$*"
 9 
10 echo "\$@=" $@
11 echo "\"\$@\"=" "$@"
12 
13 echo "print each param from \$*"
14 for var in $*
15 do
16     echo "$var"
17 done
18 
19 echo "print each param from \$@"
20 for var in $@
21 do
22     echo "$var"
23 done
24 
25 echo "print each param from \"\$*\""
26 for var in "$*"
27 do
28     echo "$var"
29 done
30 
31 echo "print each param from \"\$@\""
32 for var in "$@"
33 do
34     echo "$var"
35 done

输出结果:

 1 $ sh ./varcompare.sh "a" "b" "c" "d"
 2 $*= a b c d
 3 "$*"= a b c d
 4 $@= a b c d
 5 "$@"= a b c d
 6 print each param from $*
 7 a
 8 b
 9 c
10 d
11 print each param from $@
12 a
13 b
14 c
15 d
16 print each param from "$*"
17 a b c d
18 print each param from "$@"
19 a
20 b
21 c
22 d

退出状态:

$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。
退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。

Shell中特殊的变量

标签:

原文地址:http://www.cnblogs.com/blacksonny/p/4623205.html

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