菜鸟学Linux 第031篇笔记 script,控制,while,function
菜鸟学Linux 第031篇笔记 script,控制,while,function
一、脚本需求:
说明:此脚本能于同一个repo文件中创建之个yum源的指向:
1.接受一个文件名作为参数,此文件存放至/etc/yum.repos.d/目录中,
且文件名以.repo为后缀; 要求此文件不能事先存在,否则报错,提示已有此文件
2.在脚本中,提醒用户输入repo id;如果为quit,则退出脚本;否则,继续完成下面步骤
3.repo name 以及baseurl的路径,而后以repo文件的格式将其保存至指定的文件中;
4.enabled默认为1,而gpgcheck默认为0
5.此脚本会循环多次,除非用户为repo id 设定为quit, 并退出
Script key (脚本不怎么健壮仅做输入正确使用)
#!/bin/bash
#
REPOFILE=/etc/yum.repos.d/$1
if [ -e $REPOFILE ]; then
echo "$1 is existed or you didn't input anything."
exit 5
fi
read -p "Repository ID:" REPOID
until [ $REPOID == 'quit' ]; do
echo "[$REPOID]" >> $REPOFILE
read -p "Repository name:" REPONAME
echo "name=$REPONAME" >> $REPOFILE
read -p "Repository Baseurl:" REPOURL
echo "baseurl=$REPOURL" >> $REPOFILE
echo -e 'enabled=1\ngpgcheck=0\n\n' >> $REPOFILE
read -p "Repository ID:" REPOID
done
二、脚本需求
1.判断一个指定的bash脚本是否有语法错误:如有错误则提醒用户键入
Q或q无视错误并退出,其它键入任何键直接通过vim打开该脚本进行编辑
2.如果用户通过vim打开编辑后保存退出时仍然有错误,则重要第一步;否则关闭
script2 key (脚本不怎么健壮仅做输入正确使用)
#!/bin/bash
#
until bash -n $1 &> /dev/null; do
read -p "$1 file syntax error.[Qq] to quit, others for editing:" CHOICE
case $CHOICE in
q|Q)
echo "$1 file is wrong in syntax, quiting..."
exit 5
;;
*)
vim $1
;;
esac
done
循环控制
while, until, for
break 提前退出循环
continue 提前结束本轮循环,而进入下一轮循环;
while循环特殊用法
1.死循环(在不知道要执行多少次循环时可用此招,
但里边最好有中断break条件,不然真的就死循环了,你懂得)
while :; do
statement
done
2.从头读取某文件中的每一行并对其进行操作
while read LINE; do
statement
done < /PATH/TO/SOMEFILE
函数:功能 function
代码重用
库:so shared object
一、定义函数
1.
function function_name {
command
函数体
}
2.(注意函数名后边紧跟小括号)
FUNCNAME() {
command
函数体
}
二、自定义函数执行状态返回值
return #
#为数字0-255
函数如果被调用时遇到return #语句则后边的函数体语句不被执行
与exit # 在主函数体里类似
三、给函数传递参数
给脚本传递参数
./a.sh m n
$1 m
$2 n
给函数传递参数类似(在调用函数时直接后接参数,在函数体内用$1,$2)
FUNCNAME() {
command $1 $2
函数体
}
FUNCTIONNAME M N
执行返回值
命令执行时标准输出到屏幕上的东东
执行状态返回值
命令执行完成后执行正确或错误会有一个执行状态返回值,
此信息不会直接显示到标准输出,使用echo $?可以查看该值
条件判断里的条件可以引用执行状态返回值
写脚本
判定192.168.0.230-254之间的主机哪里在线。要求
1.使用函数实现一台主机的判定过程
2.在主程序中调用此函数
script key
#!/bin/bash
#
PING(){
if ping -c1 -w1 $1 &> /dev/null;then
return 0
else
return 1
fi
}
for I in {30..35};do
PING 10.217.3.$I
if [ $? -eq 0 ]; then
echo "10.217.3.$I is up"
else
echo "10.217.3.$I is down"
fi
done
本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1876022如需转载请自行联系原作者
Winthcloud
菜鸟学Linux 第031篇笔记 script,控制,while,function相关推荐
- 菜鸟学Linux 第034篇笔记 vmlinuz, initrd, modules, script
菜鸟学Linux 第034篇笔记 vmlinuz, initrd, modules, script 内核两部分 核心 /boot/vmlinuz-version 内核模块 /lib/modules/ ...
- 菜鸟学Linux 第093篇笔记 keepalived
菜鸟学Linux 第093篇笔记 keepalived 内容总览 keepalived介绍 配置keepalived的ipvs功能 keepalived的几个问题解决方法 keepalived 它可以 ...
- 菜鸟学Linux 第107篇笔记 zabbix概念和安装
菜鸟学Linux 第107篇笔记 zabbix概念和安装 内容总览 SNMP catti nagios zabbix Various Monitoring Functions Zabbix Agent ...
- 菜鸟学Linux 第044篇笔记 算法和私有CA
菜鸟学Linux 第044篇笔记 算法和私有CA 证书吊销列表CRL(Certificate Revocation List ) 如何解决私钥丢失 PKI: Public Key Infrastruc ...
- windows pxe 安装linux,菜鸟学Linux 第103篇笔记 pxe自动化安装linux
菜鸟学Linux 第103篇笔记 pxe自动化安装linux 内容总览 linux的系统安装 kickstart文件的组成部分 DHCP (Dynamic Host Configuration Pro ...
- 菜鸟学Linux 第050篇笔记 dhcp
菜鸟学Linux 第050篇笔记 dhcp DHCP (Dynamic Host Configuration Protocol) 早期bootp (boot protocol) lease Clien ...
- 菜鸟学Linux 第090篇笔记 corosync+drbd+mysql
菜鸟学Linux 第090篇笔记 corosync+drbd+mysql 内容总览 上节回顾 DRBD (Distributed Replicated Block Device) 分布式复制块设备 配 ...
- 菜鸟学Linux 第033篇笔记 bootloader,inittab
菜鸟学Linux 第033篇笔记 bootloader,inittab Linux 系统自启动流程 PC OS (Linux) POST-->BIOS(Boot Sequence)-->M ...
- 菜鸟学Linux 第052篇笔记 httpd-install and section2
菜鸟学Linux 第052篇笔记 httpd-install and section2 apache 17years NCSA, httpd A Patchey Server = Apache FS ...
最新文章
- 让AngularJS的$http 服务像jQuery.ajax()一样工作
- php curl基本操作
- 算法提高课-动态规划-树形DP-AcWing 1072. 树的最长路径:dfs写法
- UVA12325Zombie's Treasure Chest 宝箱
- 一分钟了解Android横竖屏 mdpi hdpi xhdpi xxhdpi xxxhdpi
- 153. 寻找旋转排序数组中的最小值 golang
- 好用的重装系统前使用的windows系统软件名称导出备份工具
- 基于JAVA+SpringMVC+Mybatis+MYSQL的企业审批管理系统
- Linux crontab 定时任务命令详解
- python游戏设计教程视频_零基础python教程-用Python设计你的第一个小游戏
- navicat for mysql提示_Navicat for MySQL使用教程: MYSQL的提示操作和技巧
- Linux软件包安装之yum的使用
- 虚幻四如何实现第一人称_虚幻周报20200616 | 开分群啦~
- 利用matlab实现卷积实验报告,matlab卷积实验报告.docx
- 中间件 东方通TongWeb运维|精选整理版本
- Axure RP 8下载
- python绘制基因结构图_分分钟教你绘制基因结构图!
- WinRAR安装教程
- 培养好习惯是很难,但也有方法
- Java编程笔记6:接口
热门文章
- UIDevice 系统信息详解
- 3563: DZY Loves Chinese - BZOJ
- WPF: 结束程序及关闭所有窗口
- 合成谬误与公地悲剧(为何设置产品总监职位及核算名义成本)
- 【elasticsearch】elasticsearch--6.8.0报错信息如下: checksum failed (hardware problem?)
- ReadWriteLock读写锁的使用
- 如何获取变量token的值
- 各层作用_OSI模型中各层在通信中的作用
- python thread模块_【Python@Thread】thread模块
- 前端开发使用react实现简易路由