shell脚本学习(五)[循环嵌套]
2020-01-22 本文已影响0人
巩翔宇Ibrahimovic
Chapter23 循环的嵌套和break,continue语句
循环的使用
1.循环和循环可以嵌套
#查找并显示目录下的所有脚本文件
for sc_name in /etc/profile.d/*.sh
do
echo $sc_name
done
#判断脚本文件是否有可执行权限
for sc_name in /etc/profile.d/*.sh
do
if [ -x $sc_name ] ; then
. $sc_name
fi
done
2.循环中可以嵌套判断,反过来也可以嵌套
3.循环可以使用break和continue语句在循环中退出
#break的使用
for num in {1..9}
do
if [ $num -eq 5 ] ; then
break
fi
echo $num
done #输出的结果是 1 2 3 4
#continue的使用
for num in {1..9}
do
if [ $num -eq 5 ] ; then
continue
fi
echo $num
done #输出的结果是 1 2 3 4 6 7 8 9 ,因为到5的时候执行continue,条件结束,不会打印出5,然后继续执行循环。
Chapter24 使用循环处理位置参数
命令行参数可以使用 $1 $2 ... ${10}...$n
进行读取
$0 代表脚本名称
@代表所有位置参数
$# 代表位置参数的数量
vim 13.sh
#!/bin/bash
# help display help help
for pos in $*
do
if [ "$pos" = "help" ]; then
echo $pos $pos
fi
done
#使用while进行位置参数的处理
while [ $# -ge 1 ]
do
if [ "$1" = "help" ]; then
echo $1 $1
fi
shift
done
小tips:进行代码的批量注释
在vim模式下,使用ctrl+v进入可视化模式,移动光标选中要进行批量注释的代码块,再按shift+i在第一行进行插入#,最后按两下Esc完成批量注释。
Chapter25 自定义函数
函数用于"包含"重复使用的命令集合
自定义函数模板
function fname(){
命令
}
#自定义函数,结合cd和ls的功能,function可以省略
function cdls() {
cd /var
ls
}
cdls #定义完成后直接执行
unset cdls #取消定义的函数
函数作用范围的变量
#定义一个可以进入到任一目录的函数
cdls() {
cd $1
ls
}
cd /tmp
local 变量名
:只在函数内部生效
Chapter26 系统函数库介绍
系统脚本
系统自建了函数库,可以在脚本中引用
/etc/init.d/functions
自建函数库
使用 source 函数脚本文件 "导入"函数