shell函数【参数传递及输入输出】&内置函数
Linux——shell脚本基础3:shell函数【参数传递及输入输出】&内置函数
函数定义
|
函数定义: |
|
在Shell 中,函数就是一组命令集或语句形成一个可用块 函数增强了shell的可编程能力 |
|
组成 |
|
function_name(){ statements } 函数名(在一个脚本中必须唯一) 函数体(命令集合) |
|
注意 |
|
shell中不存在向前声明(先定义后使用) 必须在调用一个函数之前对它进行定义 函数可以定义自己内部使用的变量:local 像使用命令一样调用函数 |
|
eg |
|
function copyfile() { local srcfile=$1 local dstfile=$2 cp $srcfile $dstfile return 0 # always return success } copyfile /tmp/myconf /etc/sysconf |
|
调用 |
|
function_name params 可以通过return命令让函数返回数字值,或者echo一个字符串返回 |
参数传递
|
参数传递: |
|
参数使用与位置参数一样 $1, $2, …… $@, $* $# func $var1 $var2 注:变量中间用空格、Tab分割 |
|
返回值 |
|
return:主要用来返回退出状态,即$? 0 <= 返回值(整数) <= 255; 0 为无错误; 非0 为有错误; 注:如果返回其他数据,可以使用echo或者全局变量 return_var=`func $var1 $var2` |
退出状态
|
退出状态(exit status): |
|
|
函数返回一个被称为退出状态的值. 退出状态可以由return 来指定statement, 否则函数的退出状态是函数最后一个执行命令的退出状态(0 表示成功,非0 表示出错代码). 可以在脚本中由$? 引用 退出值为 0 表示成功 退出值非 0 表示失败 当一个命令因为严重的信号 N 退出时,bash 将使用 128+N 作为它的退出状态 |
|
|
出现一个信号 |
128及以上 严重的信号 N 退出 |
|
命令没找到: |
127 |
|
文件找到但不可执行: |
126 |
|
展开或重定向中的错误:脚本程序可使用的错误代码 |
1-125 |
|
所有的内建命令在用法错误时返回 |
2 |
|
成功 |
0 |
内置命令补充
|
内置命令补充: |
|
:命令 |
|
冒号(:)是一个空命令,偶尔用于简化条件逻辑,相当于true的一个别名。 例如 while : 也用于在变量的条件设置中 例如 : ${var:=value} if ….;then : fi |
|
.命令 |
|
用于在当前shell中执行命令 . ./shell_script 相当于source命令 在执行脚本程序中列出的命令时,使用的是调用该脚本程序的同一个shell |
|
续行符\[enter] |
|
必须是行的最后一个字符 用于统一命令跨多行 |
|
echo命令 |
|
输出结尾带有换行符的字符串 echo –n “string to output” bash风格去换行符 |
|
eval命令 |
|
允许对参数进行求值,是shell的内置命令 即允许代码被随时生成和运行 |
|
exec命令 |
|
两种用法 典型:将当前shell替换为一个不同的程序 exec wall “Thanks for all the fish” 第二种用法修改当前文件描述符 exec 3 < afile |
|
exit n命令 |
|
使脚本程序以退出码n结束运行 若是在脚本退出时不指定退出状态,那么该脚本最后一条被执行命令状态将被用作返回值 |
|
export命令 |
|
功能说明:设置或显示环境变量。 语 法:export [-fnp][变量名称]=[变量设置值] 参 数: -f 代表[变量名称]中为函数名称。 -n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。 -p 列出所有的shell赋予程序的环境变量 注意: 1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出; 2、一个shell中的系统环境变量才会被复制到子shell中(用export定义的变量); 3、一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell中)。 4、不用export定义的变量只对该shell有效,对子shell也是无效的。 补充说明: 1.在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。 2. export把自己的参数创建为一个环境变量,而这个环境变量可以被当前程序调用的其他脚本和程序看见 被导出变量构成从该shell衍生的任何子进程的环境变量 |
|
expr命令 |
|
格式; expr argu operator argu [必带空格] 将它的参数当做一个表达式来求值,最常见用法简单数学运算 x=`expr $x + 1` 注意,运算符两边空格必须 x=$(expr $x + 1) 例子: 1. 直接计算 $expr 10 + 10 $expr 30 / 3 $expr 30 \* 3 【必须转义】 2. 增量计算 $LOOP=10 $LOOP=`expr $LOOP + 1` //反引号 3. 数值测试 可用expr测试是否为数字 $VALUE=12 $expr $VALUE + 10 > /dev/null 2>&1 $echo $? 0 4. expr本身的退出状态 注:返回值与系统退出命令恰好相反 $VALUE=”hello” $expr $VALUE = “hello” 1 $echo $? 0 5. 模式匹配及抽取 $VALUE=”hello” $expr $VALUE : ‘.*’ 5 抽取 $VALUE=”account.doc” $expr $VALUE : ‘.∗.doc’ account |
|
let命令 |
|
系统默认“+”是作为字符串处理的,因此它不会被作为一个操作符,而只是被识别为一个普通的字符串 使用let强制为数字 $ d=111 $ echo $d+1 111+1 $ let d=$d+1; echo $d 112 |
|
printf命令 |
|
格式化输出 d 十进制 C 一个字符 S 一个字符串 % 一个%字符 printf “%s\n” hello printf “%s %d” “Hi” 6 |
|
return命令 |
|
使函数返回,可有一个数值参数,作为该函数的返回值,如果不带参数,return命令默认返回最后一条命令的退出码 |
|
set命令 |
|
为shell设置参数变量 set $(date) echo The month is $2 即参数的值作为当前脚本参数列表了 |
|
shift命令 |
|
把所有参数变量左移一个位置,是$2->$1 $3->$2原来$1被丢弃,$0保持不变 可带参数表示左移一个数值参数 |
|
trap命令 |
|
用于指定接收到信号后要采取的行动 常见用途:在脚本程序被中断时完成清理工作 trap command signal 注:脚本程序通常是从上到下顺序解释执行的,必须在想保护那部分代码之前指定trap命令 HUP(1) 挂起,中断掉线或用户退出 引发 INT(2)中断 ctrl+c组合键发生 QUIT(3)退出,ctrl+\组合键发生 ABRT(6)中止,默写严重的执行错误引发 ALRM(14)报警,用来处理超时 TERM(15)终止,系统关机时发出 |
|
unset命令 |
|
从环境变量中删除变量或函数 不能删除shell本身定义的只读变量 |
FROM: http://my.oschina.net/hanzhankang/blog/202724
shell函数【参数传递及输入输出】&内置函数的更多相关文章
- [JSP][JSTL]页面调用函数--它${fn:}内置函数、是推断字符串是空的、更换车厢
页面中调用函数--之${fn:}内置函数 函数描写叙述 fn:contains(string, substring) 假设參数string中包括參数substring,返回true fn:contai ...
- Python 4 函数的参数,内置函数,装饰器,生成器,迭代器,
一.函数的参数: 1.位置参数:调用函数时根据函数定义的参数位置来传递参数. 2.关键字参数:用于函数调用,通过“键-值”形式加以指定.可以让函数更加清晰.容易使用,同时也清除了参数的顺序需求. 3. ...
- 【Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数】
一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(Firs ...
- Python--函数对象@命名空间与作用域@包函数@装饰器@迭代器@内置函数
一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(Firs ...
- 跟着ALEX 学python day3集合 文件操作 函数和函数式编程 内置函数
声明 : 文档内容学习于 http://www.cnblogs.com/xiaozhiqi/ 一. 集合 集合是一个无序的,不重复的数据组合,主要作用如下 1.去重 把一个列表变成集合 ,就自动去重 ...
- Python-Day3知识点——深浅拷贝、函数基本定义、内置函数
一.深浅拷贝 import copy #浅拷贝 n1={'k1':'wu','k2':123,'k3':['carl',852]} n2=n1 n3=copy.copy(n1) print(id(n1 ...
- 拷贝,集合,函数,enumerate,内置函数
1.拷贝 字符串和数字.赋值 id一样 import copy #提供拷贝功能 copy.copy() #原来的和现在的一起修改,不用修改时用浅copy,节省内存,复制最外层 copy.deepcop ...
- Day3 - Python基础3 函数、递归、内置函数
Python之路,Day3 - Python基础3 本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...
- 第七篇 python基础之函数,递归,内置函数
一 数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因 ...
- day16 函数的用法:内置函数,匿名函数
思维导图需要补全 : 一共有68个内置函数: #内置:python自带 # def func(): # a = 1 # b = 2 # print(locals()) # print(globals( ...
随机推荐
- Tr A HDU1575
矩阵基本算法 #include<cstdio> using namespace std; int n; struct matrix { int m[15][15]; }ans,base; ...
- Python6 - 函数总结
一.函数的基本知识 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 1.1函数定义规则 ...
- Ubuntu 之 atom 安装以及 常用配置
安装方式如下: 打开终端,使用以下命令安装: sudo add-apt-repository ppa:webupd8team/atom sudo apt-get update sudo apt-get ...
- html5 选择多张图片在页面内预览并上传到后台
版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog.csdn.net/huangxin112/article/details/74956462 需求:点击选择图片(可选多张) ...
- HTTP协议学习笔记(三)
HTTP协议学习笔记(三) 1.状态码告知从服务器端返回的请求结果 状态码的职责是当客户端向服务端向服务端发送请求时,描述返回的请求结果.借助状态码,用户可以知道服务端是正常处理了请求,还是出现了错误 ...
- Python Django 学习 (一) 【Django 框架初探】
1. 简介: Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.2008年9月发布第一个版本,目前的Django版本应该是2.1. 2. 本文的环境 OS : W ...
- Mongodb - 二进制安装
0.概述 mongodb版本:4.0.2 linux版本:redhat 6.5 安装方式:二进制安装 1.关闭防火墙 /etc/init.d/iptables status/etc/init.d/ip ...
- js数据结构之栈和队列的详细实现方法
队列 队列中我们主要实现两种: 1. 常规队列 2. 优先队列(实际应用中的排队加急情况等) 常规队列的实现方法如下: // 常规队列 function Queue () { this.queue = ...
- 文件压缩 ZipOutputStream类
先举一个压缩单个文件的例子吧: [例子1] import java.io.File; import java.io.FileInputStream; import java.io.FileOutput ...
- C# 设置MDI子窗体只能弹出一个的方法
Windows程序设计中的MDI(Multiple Document Interface)官方解释就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows .0下的Mi ...