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

相关文章
|
1月前
|
算法 Linux
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
|
1天前
|
Linux Android开发
Linux(6)CH9434 SPI调试笔记
Linux(6)CH9434 SPI调试笔记
5 0
|
1天前
|
Linux
Linux(5)WIFI/BT调试笔记
Linux(5)WIFI/BT调试笔记
7 0
|
2天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
19 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
18天前
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
35 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境
|
1月前
|
Linux 网络安全 开发工具
【Linux笔记】常用的Linux的指令
【Linux笔记】常用的Linux的指令
|
2月前
|
Linux 数据安全/隐私保护 Android开发
10 个最佳 Linux 开源笔记软件
10 个最佳 Linux 开源笔记软件
113 1
|
Shell Linux
LINUX SHELL使用while循环数组
LINUX SHELL使用while循环数组
128 0
|
12天前
|
NoSQL Linux Shell
常用的 Linux 命令
常用的 Linux 命令
33 9
|
1天前
|
Linux 数据安全/隐私保护
Linux常用命令实例带注释
Linux常用命令实例带注释
5 0