鸟哥linux学习总结1——shell scripts篇

良好的写作习惯:
1.添加作者,日期,版本,历史等信息
2.比较特殊的指令用绝对路径的方式下达
3.环境变量预先设定和宣告,这样在脚本运行中可以方便地下达外部指令
4.当有用户输入时,利用${}来判断用户输入是否为空,${}的内容在变量章节中,或者用test判断
知识点:
1、数值运算$((${var1}${var2}))或者使用declare -i var=${var1}${var2}。
2、为了确认虚拟机效率,可以利用高负载程序,例如用bc -l来计算PI的值。
3、不同执行方式:当使用以下1、在bin目录中2、直接执行3.sh +filename这三种方式执行shell时,该脚本都会使用一个新的bash环境来执行其中的指令,也就是该脚本是在子bash中执行的,当子程序完成后,子程序内的各项变量和动作都不会传回父程序中。当使用source 执行时,各个动作都会对原bash生效,例如想要让bashrc中的设定生效时,需要用source ~/.bashrc.
4、test
文件类型判断:-e 文件名是否存在 -f是否存在且为文件 -d是否存在且为目录
文件权限判断: -r是否可读 -w 是否可写 -x是否可执行
文件之间比较:file1 -nt file2 文件1是否比文件2新 -ef 判断是否为同一个文件
数值判断:-eq相等 -ne不等 -gt大于 -lt 小于 -ge大于等于 -le小于等于
判断字符串:-z字符串是否空 -n字符串是否不空 ==字符串是否相等!=字符串是否不等
多重条件:-a 相当于and -o相当于or !相当于反
可以使用中括号来代替test但需要注意以下几点
1:每个组件之间以及两端中括号都需要空格分隔。
2:变量用双引号括起来
3:常亮用单引号或双引号括起来
例如:
鸟哥linux学习总结1——shell scripts篇_第1张图片
这是因为上面的判定式相当于:
在这里插入图片描述
相当于比对了三个数据,而“==”只能判断两个数据。我们需要的是如下的对比:
在这里插入图片描述
test和中括号要经常与&&和||结合起来形成if —then — fi的效果
5、shell scripts的默认变量
$0 脚本名称
$1第一个参数
$*全部参数,其中c为分隔符,默认为空格
$#全部参数的个数
$@全部参数,每个参数独立
6、条件判断式
鸟哥linux学习总结1——shell scripts篇_第2张图片
当有多个条件时,除了利用上面test处的知识点将多个条件写到一个中括号中,还可以用多个中括号隔开,括号与括号之间用&&和||连接:
鸟哥linux学习总结1——shell scripts篇_第3张图片
在这里插入图片描述
如上图所示,如果脚本中需要处理命令产生的结果,那么可以通过将命令的结果放到文件夹中,避免一直执行命令。这个目前还不太理解后续再更新吧

鸟哥linux学习总结1——shell scripts篇_第4张图片
7、函数
鸟哥linux学习总结1——shell scripts篇_第5张图片
注意在脚本中,由于执行方式为由上到下由左到右,因此function的设定一定要在最前面
8、循环
1:不定循环
鸟哥linux学习总结1——shell scripts篇_第6张图片
鸟哥linux学习总结1——shell scripts篇_第7张图片
until为当满足条件时停止执行。
2:固定循环
鸟哥linux学习总结1——shell scripts篇_第8张图片
在这里插入图片描述
在这里插入图片描述
鸟哥linux学习总结1——shell scripts篇_第9张图片
9、debug
鸟哥linux学习总结1——shell scripts篇_第10张图片
鸟哥linux学习总结1——shell scripts篇_第11张图片

你可能感兴趣的:(鸟哥私房菜笔记)