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

相关推荐

  • 马哥教育网络班20期+第三周课程练习

    1. 列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [oracle@ocp ~]$ who root     pts/1        2016-06-26 …

    Linux干货 2016-06-26
  • HTTP响应连接介绍

    HTTP即超文本传输协议,web站点的实现就是基于HTTP协议得以实现。本文将详细讨论HTTP。 1. HTTP协议版本: HTTP从诞生到现在一共有如下几个版本: HTTP 0.9:是最早的版本,为HTTP的原型版本,其功能非常简陋; HTTP 1.0:此版本增加了很多新特性,如cache,method,MIME等,MIME的出现让网页不再是单纯的纯文本界…

    2017-05-31
  • Centos系统启动概括流程

    §·Centos系统启动概括流程 系统启动流程: PC (OS Llinux) POST(开机)–>BIOS–>MBR(bootloader .446字节)—>kernel–>/sbin/init(/etc/inittab)(用户空间的管理进程)   备注: POST :加电自…

    Linux干货 2016-09-08
  • 初识Linux

    1 硬件:cpu,内存,输入输出设备 功能:计算,存放cpu暂时计算的数据,接受输入和输出反应 2 Debian Ubuntu => mint knopix Slackware: S.u.S.E => OpenSUSE SLES RedHat: RedHat Enterprise Linux => CentOS FedoraCore 3 1…

    Linux干货 2017-07-11
  • quota AND raid

    1.磁盘配额 将home目录独立出来单独的分区,限制用户的使用。 (1)先创建分区,如下图的分区sda6 (2)命令同步系统的新增加分区:partx –a /dev/sda (3)命令格式化新分区:     (4)把创建的设备挂载到/mnt/home下    (5)迁移数据,移动之前要确保home分区没有使用。权限是保…

    Linux干货 2016-09-19
  • 自动化系统安装之DHCP服务实现

    DHCP服务实现 dhcp的工作过程是基于UDP协议的,其中用到了UDP的67(服务器),68(客户端)端口 使用场景 自动化安装系统 解决IPV4资源不足的问题 同网段多dhcp服务 dhcp服务必须基于本地 先到先得 跨网段 RFC 1542 dhcpclient客户端向dhcpsercer服务器请求续约时,中间相隔多网段时,如果路由器是 RFC1542…

    2018-01-29

评论列表(1条)

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

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