$表示当前的进程,当使用echo $$是会输出当前shell的pid
1 echo $$
变量 | 含义 |
---|---|
$0 | 当前脚本的文件名 |
$n | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 |
$# | 传递给脚本或函数的参数个数。 |
$* | 传递给脚本或函数的所有参数。 |
[email protected] | 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 |
$? | 上个命令的退出状态,或函数的返回值。 |
$$ | 当前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: [email protected]" 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
$*与[email protected]的区别:
当使用""是会出对于他们存在差异,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"[email protected]" 会将各个参数分开,以"$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 "\[email protected]=" [email protected] 11 echo "\"\[email protected]\"=" "[email protected]" 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 \[email protected]" 20 for var in [email protected] 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 \"\[email protected]\"" 32 for var in "[email protected]" 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 [email protected]= a b c d 5 "[email protected]"= a b c d 6 print each param from $* 7 a 8 b 9 c 10 d 11 print each param from [email protected] 12 a 13 b 14 c 15 d 16 print each param from "$*" 17 a b c d 18 print each param from "[email protected]" 19 a 20 b 21 c 22 d
退出状态:
$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。
退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。
时间: 2024-12-16 16:03:52