脚本,函数

case分支选择结构:

case $VAR_NAME in

模式1)

分支1

;;

模式2)

分支2

;;

*)

默认分支

;;

esac

模式(PATTERN)

  1. 普通的文本字符
  2. 通配符 globbing
  3. |或

if多分支结构和case多分支结构的区别:

相同点:1.都是条件为真执行对应的分支语句,条件为假就都不执行

2.都可以设置默认分支结构,及所有条件都不匹配的时候执行的语句

不同点:

1.if是根据目录的执行状态返回值来判断正确与否,case是根据变量的值的取值内容是否匹配模式来判断的

2.case的每个分支都必须是由双分号结束的

while

while CONDITION ; do

循环体

done

进入循环的条件:CONDITION一直为真

退出循环的条件:CONDITION为假

until CONDITION ; do

循环体

done

进入循环的条件:CONDITION一直为假

退出循环的条件:CONDITION为真

注意:对于while和until两个循环结构来讲,如果要实施变量增量操作,必须手动给出

循环控制语句

continue

continue [n]

提前结束第n层循环,不在继续后续循环

无限循环用法

while true ; do

循环体

done

until false ; do

循环体

done

在此类循环结构中必须适当的使用continue和break,以保证循环不会一直持续下去

能够实现遍历功能的while循环

while read LINES ; do

循环体

done < /path/from/somefile

until ! read LINES ; do

循环体

done < /path/from/somefile

select

select NAME in LIST ; do

命令

done

select循环主要是用于创建一个菜单式列表,供用户选择

列表是按照数字顺序排列的,我们只要选择数字即可;在标准错误上输出

一般来讲,select与case一起使用

select是一个无限循环结构,必须在循环体重使用break命令退出循环,或者使用exit命令直接终止脚本运行

function ——函数

在shell脚本编程中,函数是由若干条shell命令组成的语句块,通常用于代码重装和模块化封装函数里面的内容和shell程序上是一致的 不同点就是shell代码可以直接被执行而函数中的内容,不能独立执行,只有被调用的时候才执行

函数是在shell程序的当前shell中运行

定义函数

函数是由两部分组成的:函数名称+函数体(能够实现独立功能的shell语句块)

语法1

function func_name{

函数体

}

语法2

func_name(){

函数体

}

注意:函数名与()之间不能加空白字符

注意:函数可以在交互式环境下定义,也可以在脚本中定义

函数的使用

函数在定义的时候,其函数体重包含的所有命令均不会被执行;只有函数被调用的时候再回执行其中的命令语句

调用方式:通过直接给出函数名称的方式调用

有很多的函数是存放于专门用于保存函数的文件中,如果想要调用这样的文件中保存的函数,使用source命令加载文件,然后再以直接给出函数名称的方式调用函数

使用set命令可以查看所有当前shell中生效的命令

使用unset命令可以撤销已经定义的函数

函数的执行结构的返回值:

  1. 在函数体中使用了echo或print命令输出的结果
  2. 在函数体中某些命令的输出结果

函数的状态返回值:

1.函数中最后一条命令的执行状态返回值

2.自定义退出状态码:

return [n] n:0-255 (1 2 127尽可能不使用)

注意:只要函数在执行时遇到了return命令,不管函数中的命令语句是否全部执行完成,立刻退出函数

函数的生命周期:

从被调用开始到遇到return命令或全部的语句执行完成为止;

函数的实参

在函数体中,可以使用$1 $2..位置变量为函数提供参数,还可以使用$*、[email protected]的方式引用所有位置参数;还可以使用$#计算为函数传递的参数个数

在调用函数的时候直接在函数名称后面以空白字符分隔多喝参数即可 func_name arg1 arg2...

传递给函数参数的位置参数,是调用函数的时候函数名称后面的以空白字符分隔的字符串序列;跟脚本的位置参数不一样

变量:

环境变量:当前shell及子shell

本地变量:当前shell

局部变量:定义在函数中的变量

local VAR_NAME

当前函数体

建议:手动撤销自己定义或声明的所有变量

函数的递归调用

在函数体中调用函数自身;

阶乘

调试脚本 bash -x /PATH/TO/SCRIPT_FILE

时间: 2024-10-21 06:48:07

脚本,函数的相关文章

unity中三种调用其他脚本函数的方法

第一种,被调用脚本函数为static类型,调用时直接用  脚本名.函数名().很不实用-- 第二种,GameObject.Find("脚本所在物体名").SendMessage("函数名");  此种方法可以调用public和private类型函数 第三种,GameObject.Find("脚本所在物体名").GetComponent<脚本名>().函数名();此种方法只可以调用public类型函数 unity中三种调用其他脚本函数的

SecureCrt脚本函数(一)

SecureCrt脚本函数(一) SecureCrt脚本 自动化 测试 JS脚本 引言 Crt脚本的实现需要使用Crt定义好的各个对象的属性和方法来实现,脚本函数系列将逐一介绍Crt脚本中最常使用的对象,对这些对象以层级关系画出,本篇首先介绍顶级对象crt的属性和方法.属性是一个静态的对象,方法是具体执行的动作.属相和方法底下还可以有子属性和子方法,这个其实就和面向对象的编程方式很像,有些基础的人应该会很快掌握. 前言 在学习脚本函数前,先说说在脚本中头两行(必须写在头两行,且最好不要有空格回车

VC和LUA混合开发之VC程序调用Lua脚本函数

http://www.cnblogs.com/clever101/archive/2010/04/14/1712207.html 作者:朱金灿 来源:http://www.cnblogs.com/clever101/ Lua语言以其卓越的可扩展性.简单.高效率和与平台无关性在游戏领域得到广泛应用.今天花了一些时间学习VC和Lua如何混合开发,编写了一个小例程,和大家分享一下这方面的经验. 首先在http://www.lua.org/ftp/下载Lua的最新版本:lua-5.1.4.然后用VS C

C 语言调用python 脚本函数

刚好几个月前做过,C++ 函数里面先加载python 脚本,再调用 里面的 def 函数,我把代码贴出来,你在main 函数里面,调用getDataByScript 函数,另外相同目录下放一个 fuckTest.py ,我是centos6.7   编译 g++ -o test test.cpp -lpython2.7      callPython.h #include<Python.h> #include<string> using namespace std;   char*

Shell脚本——函数(function)

做为一个经常写脚本的运维人员来讲,都能发现一个问题,很多时候我们在不同的脚本里面重复的写着同一段代码.比如我们要去使用正则表达式去判断IP地址的合法性问题,如果每次都去写一遍这个匹配IP的表达式,整个表达式写下来老长老长的,0-9的数字组合看的眼都花了,是不是很累了.当然有人会说了,保存一份正确的代码之后,需要用这段代码的时候,直接粘贴到正在编写的脚本里面不就行了嘛!是没错,但这样是不是很多脚本里面都重复存放着同一段代码,额外增加了脚本的代码量.有没有一个两全其美的办法,让我们的脚本代码量又小,

Unity学习笔记—— 常用脚本函数

1. Awake() Start() Update() FixedUpdate()  unity 是单线程的 , 对于unity后台执行脚本,每个脚本的Awake.Update.LateUpdate.FixedUpdate,方法在后台都有一个总汇.把每个 后台的Awake() { 脚本0中的Awake(); 脚本1中的Awake(): 脚本2中的Awake(); } 后台的方法 Awake.Update.LateUpdate.FixedUpdate等等都是按照顺序,等所有子脚本中的Awake执行

如何在GameMaker (GML)中执行存储在数据结构中的Script(脚本 函数)

最近开始使用GameMaker做一些东西,所以要对GameMaker的脚本语言GML的基础有一些了解. 由于这门语言基本来讲是一门面向过程的语言,所以在有些事情上的实现方法上会和面向对象的语言所使用的常用方法有些区别. 比如在面向对象的语言中,我们经常会把一些相关的数据.方法等封装成一个类(Class),之后可能会把这个类进行实例化,便产生了一个对象(Object).而当我们需要使用这个对象中的数据或方法的时候,可能就会用如下的方式进行调用: 1 Object obj = new Object

Unity加载prefab时调用脚本函数顺序

加载prefab时使用两个接口: GameObject objPrefab = Resources.Load(pathName) as GameObject; GameObject frame = NGUITools.AddChild(parent, objPrefab); //parent为对象需要挂载到的父节点对象 对象在被挂载到父节点上时,会调用脚本,分为两种情况: 1.prefab初始保存为Active状态 立刻按顺序触发 Awake, OnEnable 函数, 下一帧触发Start函数

【U3D入门小白教程——代码篇】之三:常见脚本函数

个人学习第三章节:常见脚本 1.Awake( )与Start() Awake( )在游戏创建时调用,用于设置游戏初始化的参数 Start( )在脚本被调用,执行在所有Update( )之前,用于赋值变量 2.Update( )与FixedUpdate() Update( )用于非刚体对象的运动,诸如定时器,检测输入等,Update受制于机器性能帧率 FixedUpdate()用于刚体对象运动,不受制于机器性能,有固定调用间隔. 3.Vector3.Dot( )与Vector3.Cross( )

Jmeter执行python脚本函数使用说明

一.下载地址插件百度网盘下载地址:https://pan.baidu.com/s/1SvJjyThsXYryXuEEg9rm3g提取码:q9hd 二.使用说明1.将下载的jmeter-functions-execute-python-script-1.0.jar包放到目录%JMETER_HOME%\lib\ext下2.启动Jmeter,进入[选项]-[函数助手对话框]找到函数[__ExecutePythonScript]如下图: 参数1:脚本所在路径,示例:G:\测试代码\cloudhua\in