shell入门之函数应用
最近在学习shell编程,文中若有错误的地方还望各位批评指正。
先来看一个简单的求和函数
#!/bin/bash
#a test about function
f_sum 7 8
function f_sum(){
return $(($1+$2));
}
f_sum 3 5;
total=$(f_sum 3 6);
echo $total,$?;
注意几个问题:
1.shell是逐行执行,所以要在函数声明之后才可调用,否则会有错误
2.我们要获得函数的返回值只能通过$?
来获得,不可以通过变量拿到返回值。
再看看关于变量作用域的测试:
#!/bin/bash
#a test about function
echo $(uname)
num=100
uname(){
echo "my name is lenve"
((num++))
return 250
}
changeVar(){
local num=20
((num++))
echo $num
}
uname;
echo $?
echo $num;
changeVar;
echo $num;
输出:
要点:
1.第一个输出Linux是第一行代码执行的结果,这是调用了系统函数
2.调用uname,系统会优先调用这个脚本中的函数,找到了直接调用,找不到再找系统函数。于是输出my name is lenve
3.250是uname函数的返回值
4.101是由于num在uname函数中自增1导致的
5.21表示如果函数中定义了与函数外部同名的变量,函数内部使用的是内部定义的变量而不是全局变量
6.101进一步佐证了第5点
shell入门之函数应用的更多相关文章
- shell入门之函数应用 分类: 学习笔记 linux ubuntu 2015-07-10 21:48 77人阅读 评论(0) 收藏
最近在学习shell编程,文中若有错误的地方还望各位批评指正. 先来看一个简单的求和函数 #!/bin/bash #a test about function f_sum 7 8 function f ...
- Shell - 简明Shell入门08 - 函数(Function)
示例脚本及注释 #!/bin/bash function Check() # 使用function定义函数 { Say # 通过函数名直接调用函数 if test $1 then return 0 # ...
- Shell入门教程:Shell函数详解
Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以速度很快,另外,Shell还能对函数进行预处理,所以函数的启动比脚本更快. 1.函数定义 ...
- Shell入门教程:Shell函数的返回值
shell函数返回值一般有3种方式: 1.return语句(默认的返回值) shell函数的返回值可以和其他语言的返回值一样,通过return语句返回. 比如: #!/bin/bash functio ...
- Shell - 简明Shell入门
本文以示例和注释的方式,对Shell编程的基本知识点进行了总结和回顾,所有脚本均已做了基本的调试和验证. Shell - 简明Shell入门 01 - 第一个脚本 脚本的定义.执行方法以及echo命令 ...
- Shell入门01
Shell入门 1.基于硬件的虚拟化 2.基于平台的虚拟化 3.基于服务的虚拟化 4.基于库的虚拟化 5.基于操作系统的虚拟化 管理员使用Shell程序与操作系统进行交互,之前学习的shell脚本都是 ...
- 10_Linux基础-SHELL入门1
@ 目录 10_Linux基础-SHELL入门1 一. 输入输出重定向 二. 2个特殊文件 三. here document 四. tee命令 五. 清空文件内容 六. SHELL入门 SHELL的变 ...
- shell流程控制&函数
条件 if-then-elif-then-fi if的条件部分经常使用test EXPRESSION或[ EXPRESSION ]实现,test的用法可以参见test if 条件1 #if 条件1;t ...
- shell实现trim函数-去除字符串两侧的空格(包括tab,space键)
shell实现trim函数效果去除字符串两侧的空格,以下三个命令等价,都能实现 sed 's/^\s*//' totrim.txt |sed 's/\s*$//'>trimed.txtsed ' ...
随机推荐
- Codeforces Round #419 D. Karen and Test
Karen has just arrived at school, and she has a math test today! The test is about basic addition an ...
- hdu 3016 dp+线段树
Man Down Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统【转】
转自:http://www.cnblogs.com/riskyer/p/3366001.html qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和l ...
- linux 删除命令
rm * 文件名rm -r */ 文件夹rm -rf * 文件夹或文件名 -r 代表文件夹之下的都删除掉 -f 代表暴力删除,无需确认直接删完
- IntelliJ IDEA设置统一编码utf-8
File菜单->Other Settings->Default Settings->File Encodings 全改成utf-8!
- JVM体系结构-----深入理解内存结构
一.概述 内存在计算机中占据着至关重要的地位,任何运行时的程序或者数据都需要依靠内存作为存储介质,否则程序将无法正常运行.与C和C++相比,使用Java语言编写的程序并不需要显示的为每一个对象编写对应 ...
- HTML标签部分(块级/行级)
一.基本块级标签 1.HTML标签的分类: a.块级标签:显示为块状,独占一行,自动换行. b.行级标签:在一行中,从左往右依次排列,不会自动换行. 2.h标签(标题标签) h标签 ...
- Openstack: aborted: Block Device Mapping is Invalid
Issue: When you create an instance, you may encounter following exception: aborted: Block Device Map ...
- Docker学习笔记2: Docker 概述
一.什么是Docker Docker是基于Go语言实现的云开源项目. Docker 的主要目标是:"Bulid,Ship and Run Any App ,AnyWhere" , ...
- Maven 核心原理
Maven 核心原理 标签 : Java基础 Maven 是每一位Java工程师每天都会接触的工具, 但据我所知其实很多人对Maven理解的并不深, 只把它当做一个依赖管理工具(下载依赖.打包), M ...