向脚本传递参数就是用位置参数变量实现
传递给命令的参数称为位置参数 ls /etc/var
Myscript.sh argu1 argu2 ….${10} ${11}…
引用方式 :$1就是引用整个脚本位置参数的第一个,第一个会自动保存在$1中
$2就是引用整个脚本位置参数的第二个,第二个会自动保存在$2中
….
轮替;
Shft [n]:一次轮替n个参数
上面例子的引申
练习
写一个脚本,通过命令传递两个文本文件路径给脚本,计算其空白行数之和
特殊变量:
$0 :所执行的脚本文件路径本身
$# :看传了多少个参数
$* :所有参数,”ni” “wo” “ta”
$@ :所有参数,”ni wo ta “
练习,通过命令传递两个文本文件路径给脚本,计算
其空白行数之和,如果给的路径小于两个,提示:至少得输入两个路径,并且退出
过程式编程语言的代码执行顺序:
顺序执行:逐条执行,一个挨一个
选择执行:每一种编程语言都会用到
代码有一个分支:条件满足时,才会执行
代码有两个或以上的分支:只会执行其中一个满足条件的分支
循环执行
代码片段(循环体)要执行0,1或多个来回
选择执行:
(1)&& , ||
(2) if语句:可嵌套
(3)case语句:简化多分枝的if语句
·单分支的if语句
if 测试条件; then (如果测试条件为真,那么就怎么怎么)(此时测试条件后面要加”;“或者不加“;”就把后面的then单独换行写
If-true代码分支
fi 结束
·双分支的if语句
if 测试条件; then
If-true条件为真时执行的分支,分支里可以有n个语句
else
If-false条件为假时的分支
· fi 结束
·多分枝的if语句(测试条件不光有真假,还有如果…如果…如果…否则)
if 测试条件1; then
条件1为真分支,代码执行
elif 测试条件2; then
条件2为真分支
elif 测试条件3; then
条件3为真分支
…
elif 测试条件n; then
条件n为真分支
else
所有条件均不满足时的分支
fi
注意:即便多个条件可能同时都能满足,分支只会执行其中一个,哪个首先测试为真就执行哪个。如果第一个为真就执行第一个,后面的不考虑,如果所有都不为真,就执行else
注意:if语句可嵌套
练习: 单分支
通过参数传递一个用户名给脚本,此用户不存在时则添加之
练习:如果用户不给参数,提示:要输入信息,并给2的返回值
练习:双分支
如果用户存在,提示:用户已经存在,否则添加
练习:多分枝
脚本参数传递一个文件路径给脚本,判断此文件的类型
练习:多分枝
1,脚本参数传递一个文件路径给脚本,此参数为用户名
根据其ID号来判断用户类型
0:管理员
1-499:系统用户
500+:登录用户
2,写一个脚本
(1)列出如下菜单给用户
disk)show disks info
Mem)show memory info
Cpu )show cpu info
*)quit
(2)提示用户给出自己的选择,而后显示对应其选择的相应系统信息
练习:1,通过命令行给定两个数字,输出其中较大的数值
循环执行:将一段代码重复执行0次,1次或多次
两个关键要点
1,进入条件:什么时候执行,要不要执行,条件满足时,才进入循环
2,退出条件:每一个循环都应该有退出条件,以有机会退出循环
Bash脚本的三种循环方式
1,for 2,while 3,until(2,3几乎没什么区别,除了进入和退出的条件是相反的)
For循环的两种格式
1,遍历列表
2,控制变量
遍历列表:
for VARAIBLE in LIST;do
循环体
Done
进入条件:只要列表有可用元素,即可进入循环
退出条件:列表中的元素遍历完成
LIST的生成方式
1,直接给出
2,整数列表
(a){start..end} 自动展开
(b) seq [start [step]] end
seq 10就是1-10
seq 5 10就是5-10
seq 1 2 10就是奇数列表 1 3 5 7 9
seq 2 2 10就是偶数列表 2 4 6 8 10
3,返回列表的命令,例如ls cat
4,glob(通配)
5,变量引用
$@ $*
…
在/tmp下创建10个临时文件,叫f1到f10
求100以内所有正整数之和
原创文章,作者:wutianyou,如若转载,请注明出处:http://www.178linux.com/34542