数组、变量及bash的配置
变量:存储单个元素的内存空间
数组:存储多个元素的内存空间,相当于多个变量集合
索引:编号从0开始,属于数值索引,索引为自定义格式即为关联数组(bash4.0之后支持) bash数组支持稀疏格式
数组的声明
普通数组declare –a
关联数组 declare –A
普通数组可以不声明直接使用,关联数组必须先声明再使用
数组的赋值:(arr代表数组)
1一次只赋一个值 arr[n]=
2一次赋全部值arr=(n1 n2 n3…..)支持arr=({n1…n2})格式
3只赋值特定元素arr=(a[n1]= a[n2]= …..)
4交互式赋值 read –a arr
引用数组元素: ${arr[n]}省略n时代表下标为0的
数组长度(数组元素个数): ${}#arr[@|*]}
数组中所有元素${arr[@]}或${arr[*]}
数组切片${arr[*]:offset:number}
offset:要跳过的元素个数
number:取出的元素个数
向数组中追加元素arr[${#arr[*]}]
删除数组中元素:unset arr[n]
字符串切片(var代表变量)
${#var}:显示变量的字符长度
${var:offset:number}
offset:要跳过的字符个数
number:取出的字符个数
${var: -#}:从右向左计算取出#个字符
${var:#1: -#}:跳过前#1个字符,取到倒数#2个字符之前
基于模式取子串
${变量#*字符}:从左向右找到变量所存储字符串第一次匹配到的字符串,删除匹配到的字符串左侧包括匹配到字符串本身的字符
${变量##*字符}:从左向右找到变量所存储字符串最后一次匹配到的字符串,删除匹配到的字符串左侧包括匹配到字符串本身的字符
${变量 %*字符}:从右向左找到变量所存储字符串第一次匹配到的字符串,删除匹配到的字符串右侧包括匹配到字符串本身的字符
${变量 %%*字符}:从右向左找到变量所存储字符串最后一次匹配到的字符串,删除匹配到的字符串右侧包括匹配到字符串本身的字符
字符串的查找替换
${变量/要替换的/替换为}:替换第一个找到的字符串
${变量//要替换的/替换为}:替换所有找到的字符串
${变量/#要替换的/替换为}:只替换在行首匹配到的字符串
${变量/%要替换的/替换为}:只替换在行首匹配到的字符串
${变量^^}:将变量中所有字母转化为大写
${变量,,}:将变量中所有字母转化为小写
${变量:-value}:若变量为空或未设置则返回value值,否则返回变量值
${变量:+value}:若变量为空或未设置则返回空,否则返回value值
${变量:=value}:若变量为空或未设置则返回value值并将value值赋给变量,否则返回变量值
${变量:?error}:若变量为空或未设置则返回错误信息,否则返回变量值
declare:定义数组,变量
-r:定义只读变量
-i:定义整形变量
-a:定义数组
-A:定义关联数组
-f:查看当前shell定义的所有函数
-F:查看当前shell定义的所有函数名
-x:定义环境变量
-l:将变量内容转化为大写
-u:将变量内容转化为小写
typeset=declare
变量的间接引用
eval #=\$$变量
#=${!变量}
eval会对变量进行两次扫描,会首先扫描命令行进行所有的置换再运行命令
mktemp:创建临时文件,文件名后缀为3个以上XXX
-d:创建临时目录
install:复制
-d:创建空目录
-m:指定复制后文件权限
-o:指定复制后文件所有者
-g:指定复制后文件所属组
bash的配置文件
全局:/etc/profile /etc/profile.d/*.sh /etc/bashrc
个人:~/.bash_profile ~/.bashrc
登录分为交互式登录和非交互式登录
交互式登录:直接通过终端登录,使用su –切换
非交互式登录:图形界面下打开的终端,su切换,脚本
交互式登录访问配置文件顺序:/etc/profile /etc/profile.d/*.sh ~/.bash_profile ~/.bashrc /etc/bashrc
非交互式登录访问配置文件顺序:~/.bashrc /etc/bashrc /etc/profile.d/*.sh
profile类配置文件一般存放环境变量,命令或脚本
bashrc类配置文件一般存放本地变量,别名,函数
修改配置文件后要用.或source命令使配置生效
.bash_logout:退出时的脚本
原创文章,作者:zzzzz1357x1,如若转载,请注明出处:http://www.178linux.com/40276
评论列表(1条)
文章对各知识点进行了完整的概述,不过在思路上可以尽量详细点,邮资机的思路,而不是仅仅罗列知识点,让他们能能顺畅出的串起来成为一篇优秀的博客。