shell基础知识5-函数
函数的定义
function fname(){
}
或者
function_name(){
}
对于简单的函数,甚至可以是这样做 fname() { statement; }
函数调用
直接写函数名即可。如 fname
传参给函数
传入的参数都是位置参数,无法传入形式参数以及设置默认参数,传入位置的参数如下:
fname arg1 arg2
简单的函数例子如下:
fname(){
echo $1, $2; #访问参数1和参数2
echo "$@"; #以列表的方式一次性打印所有参数
echo "$*"; #类似于$@,但是所有参数被视为单个实体
return 0; #返回值
}
fname a b
解释下不常见的参数:
- "$@" 被扩展成 "$1" "$2" "$3" 等。
- "$*" 被扩展成 "$1c$2c$3" ,其中 c 是IFS的第一个字符。
IFS解释:
IFS是shell脚本中的一个重要概念,在处理文本数据时,它是相当有用的。IFS可以是White Space(空白键)、Tab( 表格键)、Enter( 回车键)中的一个或几个。
IFS(Internal Field Seperator)在Linux的shell中预设的分隔符,用来把command line分解成word(字段)。
IFS的设置方法很简单,和普通变量设置方法类似:
IFS=":"
建议设置IFS前保存原IFS的值,在使用后及时恢复。
别名的位置参数
通过设置别名的方法设置一个命令,然后传入参数进去看看有什么效果
[root@dns-node2 tmp]# alias lsg='ls |grep '
[root@dns-node2 tmp]# lsg sh
DaoJiShi.sh
debugsh.sh
testFunc.sh
testSet.sh
我们再写一个函数,接受一个位置参数,由此可以对比下别名的位置参数和函数的位置参数
[root@dns-node2 tmp]# getFile(){ ls |grep $1 ;}
[root@dns-node2 tmp]# getFile txt
output.txt
[root@dns-node2 tmp]# getFile sh
DaoJiShi.sh
debugsh.sh
testFunc.sh
testSet.sh
函数的扩展知识
递归函数
在Bash中,函数同样支持递归调用(可以调用自身的函数)。例如, F() { echo $1; F hello;
sleep 1; } 。
Fork炸弹
递归函数是能够调用自身的函数。这种函数必须有退出条件,否则就会不断地
生成自身,直到系统耗尽所有的资源或是崩溃。
shell基础知识5-函数的更多相关文章
- Linux Shell 基础知识(一)
1. 本文知识结构 2. shell 基础知识 2.1 shell 简单介绍 GNU bash shell 能提供对 Linux 系统的交互式访问,一般来说,使用快捷键 Ctrl + Alt + ...
- Linux shell基础知识(上)
Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...
- Shell 基础知识和总结
调试脚本 检查脚本语法错误 bash -n /path/to/some_script 调试执行 bash -x /path/to/some_script shell里的变量 本地变量:只对当前shel ...
- shell基础知识总结
1. shell 对于一台计算机而言,其硬件受系统内核的控制,使用者想要控制计算机,就必须有与系统内核进行通讯的手段.而shell就是使用者与计算机进行通讯的手段之一.从命名上看,shell其实是相对 ...
- shell基础知识---与监听服务器长连接端口状态
从未写过脚本我的最近接了俩脚本的需求,就在这分享一下我的我学到基础知识主要就四部分内容 一.变量 变量的定义 string='字符串' string="字符串" num=808st ...
- php面试笔记(5)-php基础知识-自定义函数及内部函数考点
本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而函数相关的考点 ...
- [C/C++基础知识] main函数的参数argc和argv
该篇文章主要是关于C++\C语言最基础的main函数的参数知识,是学习C++或C语言都必备的知识点.不知道你是否知道该知识?希望对大家有所帮助.一.main()函数参数通常我们在写主函数时都是void ...
- shell基础知识讲解
第1章 shell基础 1.1 什么叫做shell编程 shell编程也叫做bash高级编程语法 1.2 常见的shell命令解释器 bash redhat和centos使用 d ...
- Shell基础知识(六)
shell中有很多内建命令,如何区分内建命令与外部文件,使用type command即可看到命令类型. >> type cd # input << cd is a Shell ...
- shell基础知识
Shell 学习基础 1.组合命令的符号 管道,将前面一个命令的结果作为后面一个命令的输入 分号,顺序执行用分号分割的命令 重定向,重定向包括三种:输入重定向.输出重定向.错误重定向,以7个不同的符号 ...
随机推荐
- 关于TCP/IP
一.网络模型 计算机网络的两种模型:OSI 模型和 TCP/IP 模型 由于 OSI 模型过于复杂难以实现,导致 TCP/IP 模型更早地应用在现实中,这也使得 TCP/IP 模型成为标准 在 OSI ...
- C#通过SendARP()获取WinCE设备的Mac网卡物理地址
ARP(Address Resolution Protocol) 即 地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议. SendARP(Int32 dest, Int32 host, ...
- Java trycatch使用重试Retryer
重试的工具类 Guava-retrying 依赖 <!-- https://mvnrepository.com/artifact/com.github.rholder/guava-retryin ...
- Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest
Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) 把commons-ileu ...
- NameNode的HA
HDFS中的NameNode的HA怎么实现?(一言以蔽之) 在Hadoop集群中配置并启动两个NameNode进程,一个作为Active节点对外提供服务,另一个作为Standby的节点,两个NameN ...
- layoutSubviews的缺省实现是使用约束进行布局
Discussion The default implementation of this method does nothing on iOS 5.1 and earlier. Otherwise, ...
- redux有价值的文档
使用 Redux 管理状态,第 1 部分 https://www.ibm.com/developerworks/cn/web/wa-manage-state-with-redux-p1-david-g ...
- PHP入门之调试
环境 开发工具VSCode 2019 代码库 自建git 仓库 win7集成环境 PHPStudy2018 具体设置信息: PHP 5.4.45 ,MySql 5.7 , Apache 2.4 ...
- 在vb.net中使用委托:经理 和 员工
现在开发的一个 vb.net系统,其中有两个窗体:alert窗体和 case窗体. 在alert窗体中列出了当前可以操作的若干个alert(可以理解为数据记录),用户可以选择将其中一个或几个alert ...
- 深入ES6中的class类
今天在学习vuex时,遇到了定义store类时的一种写法,就是在类中的方法使用箭头函数绑定this的问题时的一种操作,感觉写法有点陌生,遂深究一番,好了上代码 此处写commit中的地方,是为了绑定t ...