1变量的定义

变量用于保存有用信息,如路径名、文件名、数字等,Linux用户使用变量定制其工作环境,使系统获知用户相关的配置。变量本质上是存储数据的一个或多个计算机内存地址。

变量可分为三类:

1)本地变量是仅可以在用户当前Shell生命期的脚本中使用的变量

2)环境变量则适用于所有由登录进程所产生的子进程,环境变量在用户登录后到注销之 前的所有编辑器、脚本、程序和应用中都有效

3)位置参数也属于变量,它用于向Shell脚本传递参数,是只读的

2变量替换和赋值

变量是某个值的名称,引用变量值就称为变量替换

$符号是变量替换符号,如variable是变量名,那么$variable就表示变量的值

变量赋值有两种格式:

variable=value

${ variable=value }

等号的两边可以有空格,这不影响赋值操作;

如果值(value)中包含空格,则必须用双引号括起来;

变量名只能包括大小写字母(a-zA-Z)、数字(0-9)、下划杠(_)等符号,并且 变量名不能以数字开头,否则视为无效变量名

利用unset命令可以清除变量的值,命令格式为:

unset 变量名

readonly可将变量设置为只读,变量一旦设置为只读,任何用户不能对此变量进行重新赋值

variable=value #先对一个变量进行赋值

readonly variable #variable变量设置为只读 

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

bash Shell不支持浮点型,只支持整型和字符型,默认情况下,Shell脚本变量是字符型的,同时,字符型的变量还具有一个整型值,为0;但是,bash Shell并不要求在定义一个变量时声明其类型

Shell会根据上下文判断出数值型的变量,并进行变量的算术运算和比较等数值操作。判断标准是变量中是否只是包含数字,如果变量只包含数字,则Shell认定该变量是数值型的,反之,Shell认定该变量是字符串

3环境变量

定义环境变量的方法

ENVIRON-VARIABLE=value #环境变量赋值

export ENVIRON-VARIABLE #声明环境变量

清除环境变量同样是unset命令

env命令可以列出已经定义的环境变量

系统中的环境变量:

PWDOLDPWD

PWD记录当前的目录路径,当利用cd命令改变当前目录时,系统自动更新PWD的值

OLDPWD记录旧的工作目录,即用户所处的前一个目录

PATH

PATH就记录了一系列的目录列表,Shell为每个输入命令搜索PATH中的目录列表

HOME

HOME记录当前用户的根目录

SHELL

SHELL变量保存缺省Shell,缺省的值为/bin/bash

USERUID

USERUID是保存用户信息的环境变量,USR表示已登录用户的名字,UID则表示已登录用户的ID

PPID

PPID是创建当前进程的进程号,即当前进程的父进程号

PS1PS2

提示符变量,用于设置提示符格式

PS1是用于设置一级Shell提示符的环境变量,也称为主提示符字符串,即改变: [root @jselab ~]#

6-18PS1变量是[\u@\h \W]\$\u\h\W\$表示了特定含义,\u表示当前用户名,\h表示表示主机名,\W表示当前目录名,如果是root用户,\$表示#号,其他用户,\$则表示$

PS2是用于设置二级Shell提示符的环境变量

提示符变量中特殊符号及其意义

 

 

4、配置文件

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

如果要使新加入的行立即生效,需要利用source命令执行.bash_profile文件。source命令也称为“点命令”,即句点符号“.”source命令是等价的,source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录

. .bash_profile #注意:句点符号后面用空格与文件名相分隔

source bash_profile
 

5、位置参数

位置参数(positional parameters)是一种特殊的Shell变量,用于从命令行向Shell脚本传递参数

$1表示第1个参数、$2表示第2个参数等等,$0脚本的名字,从${10}开始,参数号需要用大括号括起来,如${10}${11}${100}……

$*$@一样,表示从$1开始的全部参数

 

6、引用

引用指将字符串用引用符号括起来,以防止特殊字符被Shell脚本重解释为其他意义,特殊字符是指除了字面意思之外还可以解释为其他意思的字符

 

1)双引号引用除美圆符号($)、反引号(`)和反斜线(\)之外的所有字符,即$`\在双引号中仍被解释为特殊意义

在双引号中保持$符号的特殊意义可以引用变量,如“$variable”表示以变量值替换变量名

用双引号引用变量能够防止字符串分割,保留变量中的空格

2)单引号引用了所有字符,即单引号中字符除单引号本身之外都解释为字面意义,单引号不再具备引用变量的功能

通常将单引号的引用方式称为全引用,将双引号的引用方式称为部分引用

7、命令替换

命令替换的两种格式:

`Linux 命令`

$( Linux 命令)

8、转义

反斜线符号(\)表示转义,当反斜线后面的一个字符具有特殊意义时,反斜线将屏蔽下一个字符的特殊意义,而已字面意义解析它

 

转义符除了屏蔽特殊字符的特殊意义之外

echo命令的-e选项表示将转义符后跟字符形成的特殊字符解释成特殊意义