您的位置:首页 > 运维架构 > Shell

2.8-bash环境配置及脚本

2017-10-27 23:05 190 查看
bash的配置文件

按生效范围划分:存在两类

全局配置:

/etc/profile

/etc/profile.d/*.sh

/etc/bashrc

个人配置:

~/.bash_profile

~/.bashrc

按功能划分,存在两类:

profile类:为交互式登录的shell提供配置

全局:/etc/profile,/etc/profile.d/*.sh

个人:~/.bash_profile

功用:

1.用于定义环境变量

2.运行命令或脚本

bashrc类:为非交互式登录的shell提供配置

全局:/etc/bashrc

个人:~/.bashrc

功用:

1.定义命令别名

2.定义本地变量

shell登录:

交互式登录:

1.直接通过终端输入账号密码登录

2.使用"su - username"或"su -l username"切换的用户

读取顺序

/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非交互式登录:

1.su username

2.图形界面下打开的终端

3.执行脚本

~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

编辑配置文件定义的新配置的生效方式:

1.重新启动shell进程

2.使用source或.命令进程

Note:使用source或.执行会有些副作用,比如设定在~/.bash_profile中的个人环境变量会重复赋值

bash中的算数运算
+,-,*,/,%,**......
# help let
实现算术运算:

1.let var=算式表达式

2.var=$[算术表达式]

3.var=$((算术表达式))

4.var=$(expr arg1 arg2...)

乘法符号须转义 例如:mul=$(expr $num1 \* $num2)

bash有内建的随机数生成器:$RANDOM(生成1-32767的随机数)

增强型赋值:

+=,-=,*=,/=,%=

let varOPERvalue

例如:

count=$[$count+1]可以写成let count+=1或count++

自增,自减

let var+=1

let var++

let var-=1

let var--

练习1:写一个脚本
计算/etc/passwd文件中的第10个用户和第20个用户的ID之和

练习2:写一个脚本
传递两个文件路径路径作为参数给脚本,计算这两个文件中所有空白行之和

练习3:统计/etc,/var,/usr目录共有多少个一级子目录和文件

条件测试:
判断某需求是否满足,需要由测试机制来实现:

Note:专用的测试表达式需要由测试命令辅助完成测试过程

测试命令:

test EXPRESSION

[ EXPRESSION ]

` EXPRESSION `

Note:EXPRESSION前后必须有空白字符

bash的测试类型:
数值测试:

-gt:是否大于

-ge:是否大于等于

-eq:是否等于

-ne:是否不等于

-lt:是否小于

-le:是否小于等于

字符串测试:

==/=:是否等于

>:是否大于

<:是否小于

!=:是否不等于
=~:左侧的字符串是否能够被右侧的PATTERN所匹配到

Note:此表达式一般用于` `中

-z "STRING":测试字符串是否为空,空则为真,不空则为假

-n "STRING":测试字符串是否不空,不空为真,空则为假

Note:用于字符串比较时用到的字符串要使用引号

bash自定义退出状态码
exit
:自定义退出状态码

注意1:脚本中一旦遇到exit命令,脚本会立即终止,终止退出状态取决于exit命令后面的数字

注意2:如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一条命令的状态码

练习:写一个脚本
接受一个文件路径作为参数:
如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出
如果参数不小于1,则显示第一个参数所指向的文件的空白行数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  脚本 bash 环境配置