2.变量
2.1.1变量的设定规则
(1). 变量与发量内容以一个等号『=』相连结,ex: name=brian
(2). 等号两边不能直接接空格符
(3). 变量名称只能是字母,数字,下划线。但是数字不能作为变量名的开头
(4). 变量内容若有空格符,则用双引号或者单引号将变量内容括起来
a.双引号内的特殊字符,可以保持原有的特性。ex: newname="new name is $myname"------>echo $newname的结果为:new name is brian
b.单引号内的特殊字符,仅为一般文字。ex: newname='new name is $myname'------>echo $newname的结果为:new name is $myname
(5). 可以使用跳脱字符"\"将特殊符号(如Enter,$,\,',空格符等)变成一般字符
(6). 优先处理符号"`"或者$(指令),注意是反单引号,可以优先处理一个指令。ex: version=$(uname -r)或者version=`uname -r`,再echo $version
(7). 若变量扩展内容,则可以使用“$变量名称”或者${变量名称}累加内容.ex: PATH="$PATH":/usr/local/jdk或者PATH=${PATH}:/usr/local/jdk
(8). 若变量需要在子程序中使用,则可以通过export将变量变为环境变量。ex: export PATH
(9). 取消变量设定,使用unset 变量名称
2.1.2变量$(关于本shell的PID)
这个是代表的目前这个shell的线程ID,亦即是Process ID(PID). 查看本shell的PID,echo $$
2.1.3变量?(关于上个执行指令的回传值)
如果上个指令执行成功执行,则会回传一个0值,如果执行错误,则会回传错误代码,一般以非0数值来取代
2.1.4export(自定义变量转换成环境变量)
export 变量名
如果仅仅使用export,而没有接变量名,则终端会把所有的环境变量秀出来
2.2.1变量键盘读取与宣告
read,最常被用到shell script当中,其相关语法
read [-pt] 变量名
-p:后面接提示字符
-t:后面可以接等待的秒数,不会一直等待使用者
declare/typeset,declare 和 typeset 是一样的功能,就是在宣告变量的类型。如果使用 declare, 后面没有接任何参数,那么 bash 就会主动的将所有变量名称统统叫出来,就好像使用 set 一样
语法:declare [-aixr] variable 选项与参数:
-a :将后面名为 variable 的变量定义成为数组 (array) 类型
-i :将后面名为 variable 的变量定义成为整数数字 (integer) 类型
-x :用法与export 一样,就是将后面的 variable 变成环境发量;
-r :将变量设定成为 readonly 类型,该发量不可被更改内容,也不能 unset
2.3.1变量内容的删除,取代与替换
${变量#关键词} 若变量内容从头开始的数据符合『关键词』,则将符合的最短数据删除
${变量##关键词} 若变量内容从头开始的数据符合『关键词』,则将符合的最长数据删除
${变量%关键词} 若变量内容从尾向前的数据符合『关键词』,则将符合的最短数据删除
${变量%%关键词} 若变量内容从尾向前的数据符合『关键词』,则将符合的最长数据删除
${变量/旧字符串/新字符串} 若变量内容符合『旧字符串』则『第一个旧字符串会被新字符串取代』
${变量//旧字符串/新字符串} 若变量内容符合『旧字符串』则『全部的旧字符串会被新字符串取代』
2.3.2变量的测试与内容替换
new_var=${old_var-content} 若被测试的变量并未设定,则content将赋给变量名
new_var=${old_var:-content} 若被测试的变量并未设定或者已经赋予空字符串时,都能够用后面的内容来替换与设定
2.4.1命令别名设定:alias和unalias
ex: alias rm='rm -i' (设定命令别名)
ex: unalias rm(取消命令别名)
2.5.1shell配置文件
一般来说,login shell只会读取两个配置文件:
(1). /etc/profile:这是系统整体的设定,最好不要修改这个档案
(2). ~/.bash_profile 或 ~/.bash_login 或 ~/.profile:属于使用者个人设定,如果要改自己的数据,就写入这里!
bash 的 login shell 情况下所读取的整体环境配置文件其实只有 /etc/profile,但是 /etc/profile 还会呼叫出其他的配置文件。bash 的 login shell 设定只会读取(2)中三个档案的其中一个,而读取的顺序为~/.bash_profile,~/bash_login,~/.profile。如果~/.bash_profile存在,后面两个存不存在,都不会被读取。
(3). ~/.bashrc (non-login shell 会读)
2.5.2 source或者"."读入环境配置文件的指令
如果更改了bash shell的配置文件,而又不想重新登录就可以使配置生效,那么利用 source 或小数点 (.) 都可以将配置文件得内容读进目前的shell 环境中!