数组、变量及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中的man命令使用方法

      Linux中的man命令就是manual的缩写,此命令是用来查看系统中自带的各种参考手册,帮助用户更好的了解并使用命令。   man命令的使用格式为: man COMMAND,即man后面跟上需要查询的命令,进到手册后有如下快捷按钮帮助用户更好的操作手册。     1.按键-j &nb…

    Linux干货 2016-10-20
  • linux命令格式,获取帮助及其目录结构简要理解

    我们都知道,一台计算机要是没通电,和一堆废铁没什么区别。那么,通电开机进入系统后,会进入交互界面,等待用户操作,人与计算机交互界面有两种: GUI:图形用户接口。如我们平时使用的Windows  ,linux的X window,有KDE和GOME.   CLI:命令行接口,使用的SHELL类型有bash ,csh,tcshell,zshell等。 …

    2017-09-14
  • 第五周作业

    1、显示当前系统上root、fedora、或user1用户的默认shell;          [root@yangjifeng~]# grep -E “^(root|fedora|user1)\>” /etc/passwd | cut -d: -f…

    Linux干货 2017-09-04
  • 初学Linux之熟悉文件系统

    每一个具有存储数据功能的设备,都是有文件系统的,文件系统,规定了数据的储存的策略,以便数据有条不紊的记录保存。为了深入的学习Linux,我们必定要了解其文件系统,其中包括:文件系统结构元素;文件的创建和查看;文件删除、复制、移动等操作;管理文件的方式;软链接和硬链接。

    2017-11-26
  • LVS-fwm&persistence

    Evernote Export 1、LVS-fwm fwm:FireWall Mark        在netfilter上给报文打标记;mangle表;        ipvsadm -A|E -t|u|f service-address [-s scheduler] &nbs…

    Linux干货 2016-12-01
  • 学习宣言

            学习计划:每天至少2个小时的学习,循序渐进,先通读再精读。         学习目标:成为运维的高手,走上人生巅峰。      &nb…

    Linux干货 2016-10-25

评论列表(1条)

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

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