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,则显示第一个参数所指向的文件的空白行数 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |