标签:注意 group url 占位符 复制文件 sum 输入 oca 查找
回顾
函数:写一个代码块,用来重复调用的;
1. 函数的写法格式
2. 参数,在函数名后面直接加,即可;如果在外面传参是不行的
3. 变量
local本地变量
local i=1
如果在函数体外同样定义了一个相同的变量
扩展:source /bash /chmod+x 全路径
4. return
结束函数体执行
和exit的区别
return和exit都指定的返回值 0代表执行成功,1-255代表执行失败
return只用在函数体中;
5. 迭代
迭代的时候一定要指初始值
斐波那契数列
数组与字符串
1. 数组
数组说白了就是一段连续的变量,一段练习的内存存储空间
解决:变量过多的问题;在同一类变量中,我们不需要去定义多个名字,而是以数组的方式来定义;(列表)
1) 数组名
2) 索引
3) 值
如何去定义数组:
declare -i 定义整数(声明)
declare -a 定义数组array
declare -A 定义嵌套的数组【这样的数组值在bash中并不常用】
array=(值)
array=()空数组
如何给数组赋值:
array=()
1. array[0]=ly (在计算机语言中,索引一般从零开始计算;索引并不一定是数字:key- value;shell中数组赋值可以跳跃(跳跃赋值) )
2. array=(/var/log/*.log)
array=(a b c d…)
3. array=(‘李媛=174’‘韩忠达=160’…)
4. 通过read命令来赋值
read -t 延迟
-p “指定说明”
-a 输入数组所需要的变量值
read -a a b c d e f
如何去调用数组:
${变量名}
${数组名[索引]} 定义的是哪个索引,就看到是对应索引指定的值
${数组名} 默认调用索引=0的值
${数组名[*]}或者${数组名[@]}
调用数组内所有的值$* $@[尽量使用@]
特殊用法:
调用数组的数组长度
length(“变量”)
${#变量名[*]}或者${#变量名[@]}
添加数组值得特殊方式
${变量名[${#变量名[@]}]}=“值”或者
${变量名[${#变量名[*]}]}=“值”
关于数组的其他操作
数组切片
${变量名[@]:偏移量:所需要取出值得个数}
a=(/var/log/*.log)
echo ${a[*]:2:4}
删除值
unset 变量名[索引]
注意:删除的是索引所对的值,而不是带着索引一块删除
修改值
a[3]=c
a[3]=d 覆盖即修改
练习:
统计/var/log/*.log中索引为偶数的文件的行数的和
declare -a a={/var/log/*.log}
declare -i sum=0
for i in `seq 0 7`;do
if[ $[$i%2] -eq 0 ];then
line=`wc -l ${a[$i]}|cut -d’’ -f1`
sum+=$line
fi
done
echo “输出的行数总和为:$sum”
练习:
生成10个随机数,打印其中最大的数值
字符串:
printf 占位符:%s %d %f
%[num]s 指定该字符串站位的宽度
%-[num]s 代表左对齐
1. 字符串切片
${变量名:偏移量:数值个数}
${变量名: -数值个数} 切片从后切 【注意:冒号后面一定要加空格】
${变量名:-word} 默认赋值的意思
2. 基于模式取子字符串
从左到右
${变量名#pattern} 删除pattern第一次匹配到的字符串
${变量名##patten} 删除所有pattern匹配到的字符串
从右到左
${变量名%pattern}
${变量名%%pattern}
思考:取url中的IP地址或域名
3. 字符替换
${变量名/pattern/替换后的字符串}【patter并不是正则表达式】
匹配第一个pattern,来进行替换
${变量名//pattern/替换后的字符串}
匹配所有的pattern,并进行替换
${变量名/#pattern/替换后的字符串}
指定匹配行首必须为pattern,才去替换
${变量名/%pattern/替换后的字符串}
指定匹配行尾必须为pattern,才去替换
注意:/分隔符,不能替换为其他特殊符号
4. 查找并删除
替换中,不指定替换字符串,即为删除
${变量名/pattern/ }
${变量名//pattern/ }
${变量名/#pattern/ }
${变量名/%pattern/ }
5. 替换大小写
tr替换大小写
tr [[:lower:]] [[:upper:]] < filename
${变量名^^}将字符串全部替换为大写
${变量名,,}将字符串全部替换为小写
6. 变量赋值
a)变量名1=${变量名2:-word}
注意没有空格 输入默认值得作用,变量2没有值,就将word默认值赋值给变量1
b)变量名1=${变量名2:+word}
不常用 变量2 有值得情况下,才将word默认值赋值给变量1
c)${变量:=word}
如果变量没有值,就将word赋值给变量,有值,则使用原来的值
d)变量1=${变量2:?error_info}
如果变量2没有值,输出error_info错误信息
7. 脚本应用其他文件中的变量,如何实现?
filename 1
vim filename 1
a=1
b=2
:wq
vim filename1.sh
./全路径/filename 后者
source /全路径/filename【执行整个代码】
c=$[$a+$b]
echo $c
:wq
bash filename1.sh
练习:
8. 两个命令
install
复制或删除文件,用法同copy;优点可以指定权限来复制文件
用法:
install a文件 b目录 //复制a文件到b目录,并回复初始权限(文件:755 目录:644)
-t 源目对换
-d 创建目录
-m MODE
-o OWNER
-g GROUP
mktemp
创建临时文件以及目录
避免大家取的文件名重复;mktemp 名字. XXXX
XXXX代表随机数(字母和数字)
默认创建的是随机的文件
-d 创建的是随机的目录
file=`mktemp a.XXXX`
标签:注意 group url 占位符 复制文件 sum 输入 oca 查找
原文地址:https://www.cnblogs.com/TheNeverLemon/p/11384475.html