linux 函数

函数:

最大的功能可以简化代码,在shell中做出类似自动执行的脚本,把一段具有独立功能代码封装在一起,并给予命名;后续用到时,可直接通过给定函数名来调用整体代码;

函数的使用方式:

先定义,后调用

先编写函数代码,在给出函数名称,按需传递参数

格式:

① function function_name(){

command 1

command 2 # 函数中可以有多个语句,但不允许有空语句

}

② function_name(){

command 1

command 2

}

特点:

代码重用,模块化编程

调用函数:

f_name [argu1, argu2, ...]

注:传递参数时,一定要写成Print $n;而不能写成Print n。为什么?例如你输入的是20,则n的值($n)为20,前者表示的是把n的值,即20传递给函数Print,而后者则表示把字符n传递给函数Print。这点与在静态语言中的函数参数传递是很不同的,因为在Shell中变量的使用并不需要先定义,所以要使用变量,让Shell知道它是一个变量,并要传递它的值时,就是用$n,而不能直接用n,否则只把n当作一个字符来处理,而不是一个变量。函数代码执行时,一旦遇到return,函数代码终止运行,函数返回

自定义函数状态返回值:

return [#]

0: 成功

1-255:失败

模块化编程

功能:把脚本文件中的代码分隔为多段,放在不同的文件中

假设/root/bin/srv目录有两个文件:

(1) 函数文件

(2) 脚本文件

为脚本使用配置文件

一个文件中只定义变量

脚本文件source此变量定义的文件

变量的作用域:

局部变量:在函数体中继续调用函数自身

local VARIABLE=value

存活时间:

函数执行开始,至函数返回结束;

时间: 2024-10-12 17:00:30

linux 函数的相关文章

Signal ()函数详细介绍 Linux函数

http://blog.csdn.net/ta893115871/article/details/7475095 Signal ()函数详细介绍 Linux函数 signal()函数理解 在<signal.h> 这个头文件中. signal(参数1,参数2): 参数1:我们要进行处理的信号.系统的信号我们可以再终端键入 kill -l查看(共64个).其实这些信号时系统定义的宏. 参数2:我们处理的方式(是系统默认还是忽略还是捕获). 一般有3中方式进行操作. (1)eg: signal(SI

linux函数的阻塞与非阻塞IO及错误处理

1.阻塞是指进程等待某一个事件的发生而处于等待状态不往下执行,如果等待的事件发生了则会继续执行该进程.调用系统阻塞函数可能会导致进程阻塞进入睡眠状态. 2.阻塞IO之read读取键盘输入数据 3.linux错误处理 ###函数perro();r打印括号里的字符串和错误信息,全局变量errno会被赋值当出现错误信息时,赋的值为下面的错误标号 ###错误标号及对应错误 #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /*

linux 函数库使用

程序函数库可分为3种类型:静态函 数库(static libraries).共享函数库(shared libraries)和动态加载函数库(dynamically loaded libraries) 静态函数库是在程序执行前就加入到目标程序中去了:而共享函数库则是在程序启动的时候加载到程序中,它可以被 不同的程序共享:动态加载函数库则可以在程序运行的任何时候动态的加载.实际上,动态函数库并非另外一种库函数格式,区别是动态加载函数库是如何被程序员 使用的.后面我们将举例说明 静态函数库 静态函数库

linux函数深入探索——open函数打开文件是否将文件内容加载到内存空间

转自:https://blog.csdn.net/qq_17019203/article/details/85051627 问题:open(2)函数打开文件是否将文件内容加载到内存空间 首先,文件打开后都会产生一个文件描述符fd,这个文件描述符其实是记录在PCB的文件描述符表中,而这个文件描述符实质上是一个结构体,用来存放跟打开文件相关的信息,基于此前提,我产生了两种假设 1.文件描述符结构体中只存储了文件在硬盘中的相应地址信息,并不将文件内容加载到内存中,这样做的好处是减少内存空间的占用,但大

Linux - 函数的栈帧

栈帧(stack frame),机器用栈来传递过程参数,存储返回信息,保存寄存器用于以后恢复,以及本地存储.为单个过程(函数调用)分配的那部分栈称为栈帧.栈帧其实是两个指针寄存器, 寄存器%ebp为帧指针,而寄存器%esp为栈指针,当程序运行时,栈指针可以移动(大多数的信息的访问都是通过帧指针的).总之简单一句话,栈帧的主要作用是用来控制和保存一个过程的 所有信息的.栈帧结构如下所示: 下面,我们通过一个简单的程序来了解栈帧: 简单的函数分析,如下图: 该函数的栈帧情况: 当*p=bug,修改栈

linux函数和数组定义

函数介绍:    函数function 是由若干条shell 命令组成的语句块,实现代码重用和模块化编程.    它与shell 程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell 程序的一部分.    函数和shell 程序比较相似,区别在于:       Shell 程序在子Shell 中运行       而Shell 函数在当前Shell 中运行.因此在当前Shell 中,函数可以                                         

Linux函数整理 sysconf

sysconf这个函数用来获取系统执行的配置信息.例如页大小.最大页数.cpu个数.打开句柄的最大个数等. #include <stdio.h> #include <unistd.h> #define ONE_MB (1024 * 1024) int main() { //处理器数目 printf("The number of processors configured is :%ld\n", sysconf(_SC_NPROCESSORS_CONF)); pr

select监听多个客户端 -- linux函数

使用select函数可以以非阻塞的方式和多个socket通信.程序只是演示select函数的使用,功能非常简单,即使某个连接关闭以后也不会修改当前连接数,连接数达到最大值后会终止程序. 1. 程序使用了一个数组fd_A,通信开始后把需要通信的多个socket描述符都放入此数组. 2. 首先生成一个叫sock_fd的socket描述符,用于监听端口. 3. 将sock_fd和数组fd_A中不为0的描述符放入select将检查的集合fdsr. 4. 处理fdsr中可以接收数据的连接.如果是sock_

[Linux][函数]flock函数的用法

表头文件  #include<sys/file.h> 定义函数  int flock(int fd,int operation); 函数说明  flock()会依参数operation所指定的方式对参数fd所指的文件做各种锁定或解除锁定的动作.此函数只能锁定整个文件,无法锁定文件的某一区域. 参数  operation有下列四种情况: LOCK_SH 建立共享锁定.多个进程可同时对同一个文件作共享锁定. LOCK_EX 建立互斥锁定.一个文件同时只有一个互斥锁定. LOCK_UN 解除文件锁定