1、数组linux
一、 是一段连续的变量,一段连续的内存存储空间正则表达式
二、 解决了变量过多的问题;在同一类变量中,咱们不须要去定义多个名字,二十以数组的方式来定义;(列表)shell
(1) 数组值vim
(2) 索引数组
(3) 值bash
三、 如何定义数组:ui
(1)declare -i 定义整数(申明)索引
(2)declare -a 定义数组array内存
(3)declare -A 定义数组嵌套字符串
a[1]=b
b[1]=c
c[1]=d
【这样的数组值,在bash中不经常使用】
四、 如何给数组赋值
array=()
一、 array[0]=zz (在计算机语言中,索引通常从0开始计算)
(索引并不必定是数字:key-value array[zz]=1.87m)
(shell中数组赋值,能够跳跃(条约赋值))
二、 array=(/var/log/*.log)
作遍历
array=(a b c d e)
三、 array=(‘zz=187’ ‘aaa=186’)
四、 经过read命令来赋值
(1)read -t 延迟 -p “指定说明” -a 输入数组所需的变量值
(2)read -a a b c d e
五、 如何去调用数组:
$[变量名]
${数组名[索引]} 定义的是哪一个索引你,就看到是对应索引指定的值
${数组名} 默认调用 索引=0 的值
${数组名[*]}或者 ${数组名[@]}调用数组内全部的值
(1)调用数组的数组长度
length(“变量”)
${#变量名[*]}或者 ${#变量名[@]}
(2)添加数组值的特殊方式
${变量名[${#变量名[@]}]}=“值” 或者 ${变量名[${#变量名[*]}]}=值
(3)关于数组的其余操做
数组切片
${变量名[@]:偏移量:所须要取出值的个数}
echo ${a[*]:2:4}
${变量名[@]:偏移量}
删除值
unset ${变量名[索引]}
注意:删除是索引所对的值,而没有带着索引一块删除;
【知道值,如何查看索引?】
修改值
A[3]=c
A[3]=d 覆盖即修改
2、字符串
一、 字符串切片:
数组切片:${变量名[@]:偏移量:数值个数}
字符串切片: ${变量名:偏移量:数值个数}
${变量名:-数值个数} 【*注意:冒号后面必定要加空格*】
${变量名:-word} 默认赋值的意思
二、 基于模式取子字符串
(1)从左到右
${变量名#pattern} 删除pattern第一次匹配到的字串
${变量名##pattern} 删除全部pattern匹配到的字串
(2)从右向左
${变量名%pattern} 删除pattern第一次匹配到的字串
${变量名%%pattern} 删除全部pattern匹配到的字串
三、 字符替换
(1)${变量名/pattern/替换后的字符串}
匹配第一个pattern,来进行替换 【pattern并非正则表达式,而是文件通配符】
(2)${变量名//pattern/替换后的字符串}
匹配全部的pattern,并进行替换
(3)${变量名/#pattern/替换后的字符串}
指定匹配行首必须是pattern,才会替换
(4)${变量名/%pattern/替换后的字符串}
指定匹配行尾必须是pattern,才能替换
注意:/ 分隔符,不能替换为(#%等特殊字符,和sed不同)
四、 查找并删除
替换中,不指定替换字符串,即为删除
${变量名/pattern}
${变量名//pattern}
${变量名/#pattern}
${变量名/%pattern}
五、 替换大小写
(1)tr 替换大小写
tr [[:lower:]] [[:upper:]] < filename
(2)${变量名^^} 将字符串所有替换为大写
(3)${变量名,,} 将字符串所有替换为小写
六、 变量赋值
变量1=${变量名2:-word} 注意没有空格! 输入默认值的做用
变量1=${变量名2:+word} 不经常使用 变量2有值的状况下,才将word默认值赋值给变量1
七、脚本应用其余文件中的变量,如何实现? filename1 vim filename1 a=1 b=2 :wq vim filename1.sh . /全路径/filename 后者 source /全路径/filename //执行整个代码 c=$[$a+$b] ehco $c :wq bash filename1.sh 练习:修改hostname,定义一个 hostname文件 name=xxx ,hostname.sh八、两个命令 mktemp 建立临时文件以及目录 temp -- /tmp 避免你们取的文件名字重复;mktemp 名字.XXXXXX (XX表明随机数(字母和数字)) 默认建立是随机的文件 -d 建立的就是随机的 目录 file=`mktemp a.XXXX` install 复制或删除文件,用法同copy 优势:能够指定权限来复制文件 用法:intall a文件 b目录 //复制a文件到b目录,并回复初始权限(文件:755 目录:644) -t 源目对换 -d 建立 -m MODE -o OWNER -g GROUP九、练习:(1)获取此命令所依赖的全部库文件的列表(2)复制命令至某目标目录(例如/mnt/sysroot)下的对应路径下(3)复制此命令所依赖的全部库文件至目标目录下的对应路径下/lib64/ld-linux-x86-64.so.2 /mnt/sysroot/lib64/ld-linux-x86-64.so.2每次复制完成一个命令后,不要退出,而是提示用户输入新的复制的命令,并重复完成上述功能,直到用户输入quit退出;