变量类型:运行Shell时,会同时存在三种变量
a):局部变量
在脚本或命令中定义,仅在当前Shell实例中有效,其他Shell启动的程序不能访问局部变量。
b):环境变量
所有的程序,包括Shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要时Shell脚本也可以定义环境变量。
c):Shell变量
Shell变量是由Shell程序设置的特殊变量。Shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了Shell的正常运行。
Shell 支持自定义变量
定义变量时,变量名不加 $ ,遵循规则如下:
1.首个字符必须为字母(a-z,A-Z)
2.中间不能有空格,可以使用下划线(_)
3.不能使用标点符号
4.不能使用bash里面的关键字。
变量的设置规则:
1.变量与变量内容以一个 “=” 连接
2.等号两边不能直接接空格符。
3.变量内容若有空格符可使用双引号或单引号将内容结合起来,
双引号内的特殊字符如 $ 等,可以保持原本的特性。
单引号内的特殊符号则仅为一般字符(纯文本)。
4.可用转义字符“\”将特殊字符(如$ \ 空格 回车 !等)变成一般字符。
5.在一串命令中,还需要通过其他命令提供的信息,可以使用反单引号“`命令`”或 “$ (命令)”,例如想要取得内核版本的设置:
“version=$ (uname-r)” 再 "echo $version" 可得“2.6.18-128.el5”
6.若该变量为了增加变量内容时,则可用“$变量名称”或 ${变量名称} 累加内容。如:PATH="$PATH":/home/bin
7.若该变量需要在其他子程序中执行,则需要以 export 来使变量变成环境变量 在我目前这个Shell的情况下,去打开另一个新的Shell,新的Shell 就是子进程。
8.通常大写字符为系统默认变量,自行设置变量使用小写字符,方便判断。
显示变量:echo $变量名
取消变量:unset 变量名
重新定义变量:已定义的变量可以被重新定义
只读变量:readonly 变量名 只读变量的名不能被改变
使用变量:
使用一个已经被定义的变量,只要在变量名前加 $ 即可,
如: your_name="Tanswer"
echo ${your_name}
echo $your_name
花括号是可选的,加花括号是为了帮助解释器识别变量的边界。推荐给所有变量都加
Shell 特殊变量
1.$$ :表示当前Shell进程的ID,即pid。
语法:echo $$
2.$0 :当前脚本的文件名
3.$n :传递给脚本或函数的参数,n是一个数字,表示第几个参数。
4.$# :传递给函数或脚本参数的个数
5.$* :传递给函数或脚本的所有参数
6.$? :上个命令的退出状态,或函数的返回值
7.$@ :传递给函数或脚本的所有参数。
注:$*与$@的区别:
不被双引号包含时,都以"$1""$2"..."$n"的形式输出所有参数
被双引号包含时,$* 会将所有的参数作为一个整体,以"$1 $2...$n"的形式输出所有参数;而$@ 会将各个参数分开, 以"$1""$2"..."$n"的形式输出所有参数。