shell函数和数组 第四天

 目录

shell函数

语法格式

数组

普通数组定义

关联数组定义

数组遍历


shell函数

完成特定功能的代码片段,函数必须先定义才能使用。

  • 定义函数
  • 调用函数
  • 取消函数
  • 函数传参
  • 命名空间:在shell语言中函数的命名空间是函数内和函数外定义变量是一样的,函数内外不能赋值同样名字的变量
#变量:如果在同一个命名空间可以用,如果不再同一个命名空间就不能用
#函数变量使用的范围:默认,函数里的变量会在函数外面生效
#函数变量如果不让在其他空间用使用:local 分开
local  变量名称  #变量只在函数内生效。属于局部变量

语法格式

myfunc()		//函数定义
{
echo “This is my first shell function”
}
myfunc			//函数调用
unset myfunc	//取消函数
myfunc(){
echo "This is a new function“
}
myfunc

lsl(){
ls –l
}
cd "$1" && lsl

使用$1,$2传参
案例
#!/bin/bash
#v1.19.5.27.1
#作者:行癫

list()
{
	echo "+++++++++++++++++++++++++++++++++"
	echo "+++++++      百宝箱      ++++++++"
	echo "+++++++++++++++++++++++++++++++++"
	echo "|||||||||||||||||||||||||||||||||"
	echo "================================="
	echo "=         1.yum仓库初始化       ="
	echo "=         2.上课笔记工具安装    ="
	echo "=         3.kvm虚拟机安装       ="
	echo "=         4.vmware虚拟机安装    ="
	echo "=         5.vs code安装         ="
	echo "=         6.google浏览器安装    ="
	echo "=         7.vnc-server的安装    ="
	echo "=         8.一键安装所有        ="
	echo "=         9.退出                ="
	echo "================================="
}
yum-install(){
	echo "====正在执行yum初始化操作请耐心等待!===="
 	rm -rf /etc/yum.repos.d/*
	curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo > /dev/null
	yum -y install wget > /dev/null
	wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
	echo "====正在清空缓存,请耐心等待!===="
	yum clean all
	echo "====正在重新加载,请耐心等待!===="
	yum makecache
	echo "====successed===="
}

cherrytree(){
	echo "====正在进行安装......====="
	yum -y install cherrytree > /dev/null
	if [ $? -eq 0 ];then
		echo "====successed===="
	else
		echo "====  failed  ===="
		echo "====检查网络和yum仓库===="
		exit
	fi
}

kvm-install(){
	echo "====正在安装kvm虚拟机===="
	yum -y install libvirt* virt-manager >> /dev/null && yum -y groupinstall 'Virtualization Host' >> /dev/null
	echo "====    successed    ===="
}

vmware-install(){
	echo "====请将vmware安装包放到当前目录下===="
	chmod +x 
	echo "......."
	echo "..........."
	echo ".................100%"

}

data=`date | awk '{print $4}'`
read -p "当前时间为${data},你是否要进行电脑初始化,继续请按回车(已记录你的初始时间):"

ping -c1 www.baidu.com 1> /dev/null

if [ $? -eq 0 ];then
	echo "网络状况良好,请继续~"
else
	echo "网络状况不佳,检查网络~"
	exit
fi

echo "xingdian" > user.txt
echo "dianye" > password.txt

read -p "欢迎使用行癫工具箱,进行安装部署操作:"

read -p "请输入用户名:" name

username=`cat user.txt | awk '{print $1}'`
passwd=`cat password.txt | awk '{print $1}'`

if [ "${name}" == "${username}" ];then
	read -p "请输入密码:" password
	if [ "${password}" == "${passwd}" ];then
		echo "登陆成功,进入工具箱"
		while :
			do
				list
				read -p "请选择你要使用的工具代码:" num
				case $num in
					1)
						yum-install
						sleep 3
					;;
					2)
						cherrytree
						sleep 3
					;;
					3)
					;;
					4)
					;;
					9)
					break
					;;	
				esac
			done	
			data2=`date | awk '{print $4}'`
			echo "结束时间为${data2};感谢您的使用!"
	else 
		echo "用户名密码错误,请重新执行脚本!"
		exit
	fi
else
	echo "用户名输入错误,请重新输入!"
	exit
fi

数组

数组是一种变量,常规变量只能保存一个值,数组可以保存多个值

  • 普通数组:只能用整数作为数组的索引--0  下标
  • 关联数组:可以使用字符串作为数组的索引

普通数组定义

declare -a 定义为普通数组    默认为普通数组
数组赋值:
方法一:一次赋一个值
数组名[索引]=变量值
# array1[0]=pear
# array1[1]=apple
# array1[2]=orange
# array1[3]=peach

方法二:一次赋多个值
# array2=(tom jack alice)
# array5=(tom jack alice "bash shell")    如果一个值中有空格要用双引号引起来
# colors=($red $blue $green $recolor)
# array5=(1 2 3 4 5 6 7 "linux shell" [20]=saltstack)
# array8=`cat /etc/passwd`

${数组名[索引]}  引用变量值
# echo ${array1[0]}			访问数组中的第一个元素
# echo ${array1[@]}			访问数组中所有元素  等同于 echo ${array1[*]}
# echo ${#array1[@]}		统计数组元素的个数
# echo ${!array2[@]}		获取数组元素的索引
# echo ${array1[@]:1}		从数组下标1开始
# echo ${array1[@]:1:2}	    从数组下标1开始,访问两个元素

关联数组定义

declare -A 数组名    定义为关联数组
数组赋值:
方法一:一次赋一个值
数组名[索引]=变量值
# ass_array1[index1]=pear
# ass_array1[index2]=apple
# ass_array1[index3]=orange
# ass_array1[index4]=peach

方法二:一次赋多个值
ass_array2=([index1]=tom [index2]=jack [index3]=alice [index4]='bash shell')

访问数组元数:
# echo ${ass_array2[index2]}			访问数组中的索引为index2的元素
# echo ${ass_array2[@]}					访问数组中所有元素  等同于 echo ${array1[*]}
# echo ${#ass_array2[@]}				获得数组元素的个数
# echo ${!ass_array2[@]}				获得数组元素的索引

数组遍历

for循环遍历数组

案例1:
#!/bin/bash
#定义数组
array=(Mon Tue Wed Thur Fir Sat Sun)
#数组遍历
for day in ${array[*]}
do
    echo $day
done


案例2:
for line in `cat /etc/hosts`    赋值    for循环读取文件内容时是以空格为分隔符
do
    hosts[++j]=$line
   数组名 索引   值
done

for  i in ${!hosts[@]}           遍历
          数组元素的索引
do
    echo "$i : ${hosts[i]}"
done

while+for循环遍历数组

while read line                    while循环读取文件时一次读取一整行
do 
        hosts[++i]=$line
      数组   索引付值  读取的内容
      数组名 下标(索引)  值
done < /etc/hosts

echo  "hosts first: ${hosts[1]}"

#遍历
for i in ${!hosts[@]}
do
    echo "$i : ${hosts[i]}"
done

通过数组统计某个东西的数量时,把要统计的对象作为数组的索引,就是统计谁就把谁作为索引 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值