跳转至

Shell特殊变量

变量说明

变量 说明
$$ Shell本身的PID(ProcessID)
$! Shell最后运行的后台Process的PID
$? 最后运行的命令的结束代码(返回值)
$- 使用Set命令设定的Flag一览
$* 不加引号,获取所有传参的参数,加引号 “$*” ,将所有参数视为单个字符串,如 “$1 $2 $3”
$@ 不加引号,获取所有传参的参数,加引号 “$@” ,将所有参数视为不同的独立字符串,如“$1”“$2” “$3”
$# 获取脚本后跟参数的总个数
$0 获取shell脚本名,dirname $0 脚本路径,basename $0 脚本名字
$1~$n 脚本第n个参数,大于9时,用{},如${10}

脚本示例

vim variable.sh

Bash
1
2
3
4
5
6
#!/bin/sh
echo "number:$#"
echo "scname:$0"
echo "first :$1"
echo "second:$2"
echo "argume:$@"

执行效果

bash variable.sh aa bb

Bash
1
2
3
4
5
number:2
scname:./variable
first: aa
second:bb
argume:aa bb

通过显示结果可以看到:

  • $# 是传给脚本的参数个数
  • $0 是脚本本身的名字
  • $1 是传递给该shell脚本的第一个参数
  • $2 是传递给该shell脚本的第二个参数
  • $@ 是传给脚本的所有参数的列表

特殊扩展变量

表达式 说明 备注
${var:-word} var值为空或未赋值,返回word 代替值,不设置值
${var:=word} var值为空或未赋值,返回word 设置var值为word
${var:?word} var值为空或未赋值,返回-bash: var: word 将word作为标准错误STDERR输出
${var:+word} var已赋值不为空,返回word 有值替代为word返回,空值不处理