数组、变量及bash的配置

数组、变量及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[*]offsetnumber}

offset:要跳过的元素个数

number:取出的元素个数

向数组中追加元素arr[${#arr[*]}]

删除数组中元素:unset arr[n]

字符串切片(var代表变量)

${#var}:显示变量的字符长度

${varoffsetnumber}

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

(0)
zzzzz1357x1zzzzz1357x1
上一篇 2016-08-26 09:11
下一篇 2016-08-26 09:11

相关推荐

  • Linux系统中硬链接和软链接

    使用对象:linux初学者。   一、硬链接和软链接的概念 硬链接是给已经存在的数据文件另外创建一个名字,通过该名字也可以访问该数据文件。就好像给张三起个绰号叫“小二黑”,通过“张三”这个名字能找到这个人,通过“小二黑”这个名字也能找到这个人。        软链接是给文件名在其…

    Linux干货 2016-10-20
  • 三.Linux博客-2016年7月24日帮助、history、别名、tree

    格式说明: 操作 概念 命令 说明及举例 三-1.帮助、history、别名、tree touch /etc/nologin 使普通用户不能登录(创建了一个文件,删掉就可以登陆)   ll /etc/nologin 查看那个文件 -rm -f /etc/  删…

    Linux干货 2016-08-23
  • CentOS6 编译安装httpd-2.4

       CentOS7的镜像中已经提供了httpd-2.4的rpm包,httpd-2.4相对于httpd2.2有较大的改进,在CentOS6下只能通过Apache官方网站提供的源码包编译安装。    有时候,我们需要应用http-2.4的某些特性,但是因为当前的发行版没有支持,所以我们需要自己编译安装。 httpd-2.…

    Linux干货 2016-07-27
  • 08.08 笔记总结

    1. 使用sed显示特定行  sed -n '20p' /etc/passwd  // 显示/etc/passwd中第20行 命令相当于  cat /etc/passwd | head -20 | tail -1 2. sed -ibak '/^UUID.*/d' /etc/fstab &…

    Linux干货 2016-08-12
  • Gdevops 2017全球敏捷运维峰会【北京站】限时免费!

    Introduction 全球敏捷运维峰会 打造敏捷与运维领域标杆峰会! 2017年全球敏捷运维峰会(Gdevops, Global Devops Summit)将于2017年在成都、上海、北京、广州四城全面启动,本次Gdevops 2017全球敏捷运维峰会【北京站】由上海市经济和信息化委员会指导,上海市云计算产业促进中心、DBAplus社群主办,数十家媒体…

    Linux干货 2017-08-02
  • 管道,用户组管理

    管道 |          把左边的命令执行结果输送到右边的命令作为参数执行,可以多管道多任务执行     这就是linux的哲学思想之一,链接程序,共同完成复杂任务     错误输出默认不能通过管道…

    Linux干货 2016-08-04

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-26 09:22

    文章对各知识点进行了完整的概述,不过在思路上可以尽量详细点,邮资机的思路,而不是仅仅罗列知识点,让他们能能顺畅出的串起来成为一篇优秀的博客。