菜鸟学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相关推荐

  1. 菜鸟学Linux 第034篇笔记 vmlinuz, initrd, modules, script

    菜鸟学Linux 第034篇笔记  vmlinuz, initrd, modules, script 内核两部分 核心 /boot/vmlinuz-version 内核模块 /lib/modules/ ...

  2. 菜鸟学Linux 第093篇笔记 keepalived

    菜鸟学Linux 第093篇笔记 keepalived 内容总览 keepalived介绍 配置keepalived的ipvs功能 keepalived的几个问题解决方法 keepalived 它可以 ...

  3. 菜鸟学Linux 第107篇笔记 zabbix概念和安装

    菜鸟学Linux 第107篇笔记 zabbix概念和安装 内容总览 SNMP catti nagios zabbix Various Monitoring Functions Zabbix Agent ...

  4. 菜鸟学Linux 第044篇笔记 算法和私有CA

    菜鸟学Linux 第044篇笔记 算法和私有CA 证书吊销列表CRL(Certificate Revocation List ) 如何解决私钥丢失 PKI: Public Key Infrastruc ...

  5. windows pxe 安装linux,菜鸟学Linux 第103篇笔记 pxe自动化安装linux

    菜鸟学Linux 第103篇笔记 pxe自动化安装linux 内容总览 linux的系统安装 kickstart文件的组成部分 DHCP (Dynamic Host Configuration Pro ...

  6. 菜鸟学Linux 第050篇笔记 dhcp

    菜鸟学Linux 第050篇笔记 dhcp DHCP (Dynamic Host Configuration Protocol) 早期bootp (boot protocol) lease Clien ...

  7. 菜鸟学Linux 第090篇笔记 corosync+drbd+mysql

    菜鸟学Linux 第090篇笔记 corosync+drbd+mysql 内容总览 上节回顾 DRBD (Distributed Replicated Block Device) 分布式复制块设备 配 ...

  8. 菜鸟学Linux 第033篇笔记 bootloader,inittab

    菜鸟学Linux 第033篇笔记 bootloader,inittab Linux 系统自启动流程 PC OS (Linux) POST-->BIOS(Boot Sequence)-->M ...

  9. 菜鸟学Linux 第052篇笔记 httpd-install and section2

    菜鸟学Linux 第052篇笔记  httpd-install and section2 apache 17years NCSA, httpd A Patchey Server = Apache FS ...

最新文章

  1. 让AngularJS的$http 服务像jQuery.ajax()一样工作
  2. php curl基本操作
  3. 算法提高课-动态规划-树形DP-AcWing 1072. 树的最长路径:dfs写法
  4. UVA12325Zombie's Treasure Chest 宝箱
  5. 一分钟了解Android横竖屏 mdpi hdpi xhdpi xxhdpi xxxhdpi
  6. 153. 寻找旋转排序数组中的最小值 golang
  7. 好用的重装系统前使用的windows系统软件名称导出备份工具
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的企业审批管理系统
  9. Linux crontab 定时任务命令详解
  10. python游戏设计教程视频_零基础python教程-用Python设计你的第一个小游戏
  11. navicat for mysql提示_Navicat for MySQL使用教程: MYSQL的提示操作和技巧
  12. Linux软件包安装之yum的使用
  13. 虚幻四如何实现第一人称_虚幻周报20200616 | 开分群啦~
  14. 利用matlab实现卷积实验报告,matlab卷积实验报告.docx
  15. 中间件 东方通TongWeb运维|精选整理版本
  16. Axure RP 8下载
  17. python绘制基因结构图_分分钟教你绘制基因结构图!
  18. WinRAR安装教程
  19. 培养好习惯是很难,但也有方法
  20. Java编程笔记6:接口

热门文章

  1. UIDevice 系统信息详解
  2. 3563: DZY Loves Chinese - BZOJ
  3. WPF: 结束程序及关闭所有窗口
  4. 合成谬误与公地悲剧(为何设置产品总监职位及核算名义成本)
  5. 【elasticsearch】elasticsearch--6.8.0报错信息如下: checksum failed (hardware problem?)
  6. ReadWriteLock读写锁的使用
  7. 如何获取变量token的值
  8. 各层作用_OSI模型中各层在通信中的作用
  9. python thread模块_【Python@Thread】thread模块
  10. 前端开发使用react实现简易路由