Appearance
系统预定义变量
$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(具体由命令决定),则证明上一个命令执行不正确。