菜鸟学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

相关文章
|
4月前
|
运维 监控 中间件
Linux运维笔记 - 如何使用WGCLOUD监控交换机的流量
WGCLOUD是一款开源免费的通用主机监控工具,安装使用都非常简单,它可以监控主机、服务器的cpu、内存、磁盘、流量等数据,也可以监控数据库、中间件、网络设备
|
11月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
552 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
11月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
357 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
379 2
linux笔记 diff及patch的制作与使用
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战
|
关系型数据库 MySQL Linux
【Azure 应用服务】[App Service For Linux(Function) ] Python ModuleNotFoundError: No module named 'MySQLdb'
【Azure 应用服务】[App Service For Linux(Function) ] Python ModuleNotFoundError: No module named 'MySQLdb'
|
Ubuntu Linux Shell
【linux】PetaLinux 2024.1安装笔记
【linux】PetaLinux 2024.1安装笔记
1152 0
|
JavaScript Linux Shell
探索Linux中的`script`命令:记录你的终端会话
`script`命令在Linux中记录终端会话,用于重现交互、教学和调试。它启动新shell,捕获所有输入输出到文件,默认文件为`typescript`。主要选项包括追加输出 `-a`,执行单个命令 `-c`,实时写入 `-f`,静默模式 `-q` 和添加时间戳 `-t`。示例用法:记录脚本执行`script -a log.sh script.sh`,或带时间戳记录`script -t timestamps.log`。注意文件权限、磁盘空间和敏感信息处理。
|
监控 JavaScript Linux
【Linux学习 】Linux使用Script命令来记录并回放终端会话
[TOC] 一、背景 在之前的博客 【Git学习-->如何通过Shell脚本实现 监控Gitlab备份整个过程并且通过邮件通知得到备份结果?】 里面,我已经详细记录了每天的自动备份与清理过期备份文件的工作。
3387 0