《Linux Shell》之五:变量和引用

变量本质上是存储数据的一个或多个计算机内存地址。

变量分为:本地变量、环境变量、位置参数。其中位置参数用于向shell脚本传递参数,是只读的。

unset var可将var变量清除掉

变量赋值两种特殊情形,使用的时候一定要用$符号和大括号括起来:

${variable:=value}  --> 对未赋值的variable,将value值赋给它

${variable:-value}   --> 对未赋值的variable,将value值赋给它,但value值不存储到variable对应的地址空间

${variable?value}用来测试变量是否被赋值

# readonly variable  --> 设置变量为只读的

6.1.2 无类型的Shell脚本变量

Shell脚本变量是无类型的,这与awk变量是一样的。

Bash不支持浮点型,只支持整形和字符型,默认情况下,bash脚本变量是字符型的,同时,字符型变量还有个整形值0.也就是说你拿字符型变量做数值运算,它的值其实是0

对于空字符串和未定义变量处理方式,shell变量默认就是字符型的,字符型的初始值为空,而且可以不预先定义变量而直接使用它,跟初始化定义它为""效果是一样的。

 >>几个环境变量配置文件

由于Linux环境变量数量较多,因此系统管理员不会利用export逐个设置环境变量,而是将export命令放置在特殊的配置文件中,Shell能够在开机的时候自动执行这些配置文件。

.bash_profile:

最最重要的配置文件,当某linux用户登录时,shell会自动执行.bash_profile文件,如果.bash_profile文件不存在,则自动执行系统默认的配置文件/etc/profile

修改此配置文件后要立即生效,请使用 source 或.  命令

.bashrc:

如果用户由当前shell创建一个新的子shell,子shell会尝试读取.bashrc中命令以设置环境变量。.bashrc使得用户登录时的环境变量与子shell环境变量相分离。

.bash_logout:

.bash_logout文件在用户注销时执行

6.1.4 位置参数

位置参数 positional parameters是一种特殊shell变量,用于从命令行向shell脚本传递参数,$1表示第1个参数、$2表示第2个参数等。$0表示脚本名称(带路径) ,$* 或 $@表示从$1开始的全部参数列表

-----------------特殊变量-----------------------

$#  传递到脚本的参数数量

$*或$@ 传递到脚本的所有参数

$$  脚本运行的进程号

$? 命令的退出状态,0表示没有错误,非0表示有错误

引用符号及其意义:

""  引用除$、反引号、反斜杠\之外的所有字符

''   引用所有的字符

反引号  shell将反引号中内容解释为系统命令

\    转义符,屏蔽下一个字符的特殊意义

6.2.3  转义字符

特殊字符及其意义

特殊字符意义
&传递到脚本的参数数量
*0个或多个在*字符前的那个普通字符
+匹配1个或多个在其之前的普通字符
^匹配行首,或后面字符的非
$命令退出状态,0表示没错误,非0...
`反引号,shell引用符号,解析命令
"双引用,shell引用符号
|管道符号或表示“或”意义
?匹配0个或1个其前的普通字符
\转义符本身

转义符后跟字母表示的特殊意义:

符号意义
\n换行
\r回车
\tTab键
\v或\f换行但光标停留在原来位置
\bBackspace键
\a警报声
\0xxASCII码0xx对应字符

# echo $'\t\thello'

使用$' '后,单引号里面的转义加特殊字母就可以解析成特殊意义了。

其他情况下就是原始值了。

 本人博客已搬家,新地址为:http://yidao620c.github.io/

相关推荐