Skip to content

系统预定义变量

  • $HOME

  • $PWD

  • $SHELL

  • $USER

  • ...

显示所有的环境变量 env

显示所有的系统全局变量 printenv 查看具体的全局变量 printenv $HOME 可以省略 $ printenv HOME

显示当前 Shell 中的所有变量 set

自定义变量

定义

  • 变量名可以由数字、字母和下划线组查,不能以数字开头。

  • =两侧不能有空格

  • bash 中,变量默认类型都是字符串类型,无法直接进行数值运算

  • 变量的值如果有空格,需要使用单引号或双引号括起来

foo=foo bar="Hello World"

声明静态变量,不能 unset。 readonly baz

定义全局变量 export globalVar=g

将局部变量重新定义为全局变量 export foo

子 Shell 修改全局变量不会影响全局变量

修改

foo=bar

撤销

unset foo

特殊变量

$n(n为数字)

基本语法

使用 "====$n====" 会将 $n 当作变量,'====$n====' 则不会。

sh
echo '====$n===='
echo script name: $0
echo 1st param: $1
echo 2st param: $2

./foo.sh arg1 arg2

  • $0

    脚本名称

  • $1-$9

    第一到第九个参数

  • ${10}

    十及以上的参数

$# 获取所有参数的个数

基本语法

sh
echo '====$n===='
echo script name: $0
echo 1st param: $1
echo 2st param: $2
echo '====$#===='
echo $#

$* 获取命令行中所有的参数,把整个参数看成一个整体。

$@ 获取命令行中所有的参数,把每个参数区分对待。

$?

最后一次执行的命令的返回状态,如果这个变量的值为 0,证明上一个命令正确执行。如果变量值 为非 0(具体由命令决定),则证明上一个命令执行不正确。