2.8-bash环境配置及脚本

前端之家收集整理的这篇文章主要介绍了2.8-bash环境配置及脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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 [n]:自定义退出状态码

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

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


练习:写一个脚本

接受一个文件路径作为参数:

如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出

如果参数不小于1,则显示第一个参数所指向的文件的空白行数

猜你在找的Bash相关文章