标签:
$表示当前的进程,当使用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。
标签:
原文地址:http://www.cnblogs.com/blacksonny/p/4623205.html