数组、变量及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

相关推荐

  • LVM——如何让你的磁盘空间可大可小

    逻辑卷管理器(LVM) 允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小 允许在多个物理设备间重新组织文件系统          将设备指定为物理卷          用一个或者多个物理卷来创…

    Linux干货 2016-08-29
  • Linux的软件包管理(RPM)

    软件包管理(RPM)   本章节内容:   软件运行环境   软件包基础  Rpm包管理   一、软件运行环境(了解API和ABI)  API:应用程序开发接口,POSIX国际标准。  程序源代码–> 预处理–> 编译–&…

    Linux干货 2016-08-21
  • 第六周作业-练习题sed,crontab,bash

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;    方法一用sed:          方法二用vim       &…

    Linux干货 2017-01-16
  • LAMP 基于httpd 2.4

    一 安装前准备 说明 操作系统:CentOS 7 64位 Apache 版本:httpd-2.4.6-40.el7.centos.x86_64 httpd服务器ip:192.168.1.4   1.  配置好IP、DNS 、网关,确保使用远程连接工具能够连接服务器 2.     &nbsp…

    Linux干货 2016-04-05
  • 2016-08-10作业

    1、编写脚本/root/bin/systeminfo.sh, 显示当前主机系统信息,包括主机名,IPv4 地址,操作系统版本,内核版本,CPU 型号,内存大小,硬盘大小。 #!/bin/bash echo "hostname is `hostname`" echo "IPv4 is `ifconfig | sed -n &#03…

    Linux干货 2016-08-15
  • 马哥教育网络22班第二周课程练习

    1,Linux上的文件管理类命令有哪些?其常用的使用方法机器相关实例演示 文件管理类命令:   cp 文件复制         常用选项:             -i:交互式           &…

    Linux干货 2016-08-30

评论列表(1条)

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

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