1、变量的定义
变量用于保存有用信息,如路径名、文件名、数字等,Linux用户使用变量定制其工作环境,使系统获知用户相关的配置。变量本质上是存储数据的一个或多个计算机内存地址。
变量可分为三类:
1)本地变量是仅可以在用户当前Shell生命期的脚本中使用的变量
2)环境变量则适用于所有由登录进程所产生的子进程,环境变量在用户登录后到注销之 前的所有编辑器、脚本、程序和应用中都有效
3)位置参数也属于变量,它用于向Shell脚本传递参数,是只读的
2、变量替换和赋值
变量是某个值的名称,引用变量值就称为变量替换
$符号是变量替换符号,如variable是变量名,那么$variable就表示变量的值
变量赋值有两种格式:
variable=value
${ variable=value }
等号的两边可以有空格,这不影响赋值操作;
如果值(value)中包含空格,则必须用双引号括起来;
变量名只能包括大小写字母(a-z和A-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命令可以列出已经定义的环境变量
系统中的环境变量:
PWD和OLDPWD
PWD记录当前的目录路径,当利用cd命令改变当前目录时,系统自动更新PWD的值
OLDPWD记录旧的工作目录,即用户所处的前一个目录
PATH
PATH就记录了一系列的目录列表,Shell为每个输入命令搜索PATH中的目录列表
HOME
HOME记录当前用户的根目录
SHELL
SHELL变量保存缺省Shell,缺省的值为/bin/bash
USER和UID
USER和UID是保存用户信息的环境变量,USR表示已登录用户的名字,UID则表示已登录用户的ID
PPID
PPID是创建当前进程的进程号,即当前进程的父进程号
PS1和PS2
提示符变量,用于设置提示符格式
PS1是用于设置一级Shell提示符的环境变量,也称为主提示符字符串,即改变: [root @jselab ~]#
例6-18:PS1变量是[\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选项表示将转义符后跟字符形成的特殊字符解释成特殊意义
转载于:https://blog.51cto.com/peaceweb/770252