完成特定功能的代码片段,函数必须先定义才能使用。
#变量:如果在同一个命名空间可以用,如果不再同一个命名空间就不能用
#函数变量使用的范围:默认,函数里的变量会在函数外面生效
#函数变量如果不让在其他空间用使用: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/nullyum -y install wget > /dev/nullwget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repoecho "====正在清空缓存,请耐心等待!===="yum clean allecho "====正在重新加载,请耐心等待!===="yum makecacheecho "====successed===="
}cherrytree(){echo "====正在进行安装......====="yum -y install cherrytree > /dev/nullif [ $? -eq 0 ];thenecho "====successed===="elseecho "==== failed ===="echo "====检查网络和yum仓库===="exitfi
}kvm-install(){echo "====正在安装kvm虚拟机===="yum -y install libvirt* virt-manager >> /dev/null && yum -y groupinstall 'Virtualization Host' >> /dev/nullecho "==== 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/nullif [ $? -eq 0 ];thenecho "网络状况良好,请继续~"
elseecho "网络状况不佳,检查网络~"exit
fiecho "xingdian" > user.txt
echo "dianye" > password.txtread -p "欢迎使用行癫工具箱,进行安装部署操作:"read -p "请输入用户名:" nameusername=`cat user.txt | awk '{print $1}'`
passwd=`cat password.txt | awk '{print $1}'`if [ "${name}" == "${username}" ];thenread -p "请输入密码:" passwordif [ "${password}" == "${passwd}" ];thenecho "登陆成功,进入工具箱"while :dolistread -p "请选择你要使用的工具代码:" numcase $num in1)yum-installsleep 3;;2)cherrytreesleep 3;;3);;4);;9)break;; esacdone data2=`date | awk '{print $4}'`echo "结束时间为${data2};感谢您的使用!"else echo "用户名密码错误,请重新执行脚本!"exitfi
elseecho "用户名输入错误,请重新输入!"exit
fi
数组是一种变量,常规变量只能保存一个值,数组可以保存多个值
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[*]}
doecho $day
done案例2:
for line in `cat /etc/hosts` 赋值 for循环读取文件内容时是以空格为分隔符
dohosts[++j]=$line数组名 索引 值
donefor i in ${!hosts[@]} 遍历数组元素的索引
doecho "$i : ${hosts[i]}"
done
while+for循环遍历数组
while read line while循环读取文件时一次读取一整行
do hosts[++i]=$line数组 索引付值 读取的内容数组名 下标(索引) 值
done < /etc/hostsecho "hosts first: ${hosts[1]}"#遍历
for i in ${!hosts[@]}
doecho "$i : ${hosts[i]}"
done
通过数组统计某个东西的数量时,把要统计的对象作为数组的索引,就是统计谁就把谁作为索引
上一篇: “扬眉抵掌”的意思
下一篇: 处罚合同范本大全优选8篇