shell脚本函数声明,调用
shell脚本中函数的声明, 调用,处理结果的返回等问题。
1. 函数声明
1.1 函数需要先声明后调用, 声明和调用有顺序要求。
1.2 shell中的函数返回值只能是数字, 返回0表示执行成功, 返回其他类型的值时会报错:numeric argument required
1.3 因函数返回值被限制的问题, 所以需要定义全局变量来获取函数的处理结果。
1.4 函数的调用方式: 函数名 参数列表
demo:
#全局变量:字符串去除前后空格的结果
trimResult=""#函数声明:trim字符串
function trim(){#字符串为空不处理if [ -z "$1" ]; thentrimResult=""else #去除字符串前后的空格trimResult=$(echo $1|awk '{sub(/^ */,"");sub(/ *$/,"")}1')fi
}#函数调用: 获取第一个“-”之后的trim之后的字符串, 字符串可能有空格, 所以用引号包括trim "$(echo ${temp#*-})"#函数处理结果使用
echo "trim之后的内容为:$trimResult"
*****问题:shell默认空格为分隔符, 如果传递的参数中有空格,则会被认为是多个参数。
有两种解决方法:
方式一:使用引号将参数包括起来
#传递带有空格的参数
trim "first paramter"
方式二:重置默认分隔符
#!/bin/shfunction test(){echo "all params=$@"echo "param_a=$1"echo "param_b=$2"
}
param1="aa bb"
echo 'invoke: test $param1, '"param1=$param1"
test $param1param2="11 22"
echo 'invoke: test "$param2", '"param2=$param2"
test "$param2"
#备份默认分隔符
IFS_BAK=$IFS
#指定新的分隔符
IFS="!!"
echo 'change default separator, invoke: test $param1,'" param1=$param1"
test $param1
#恢复系统默认分隔符
IFS=$IFS_BAK
执行结果: 由结果可知,使用引号或者修改默认分隔符后, 带空格的参数结构不会被破坏
invoke: test $param1, param1=aa bb
all params=aa bb
param_a=aa
param_b=bb
invoke: test "$param2", param2=11 22
all params=11 22
param_a=11 22
param_b=
change default separator, invoke: test $param1, param1=aa bb
all params=aa bb
param_a=aa bb
param_b=
shell脚本函数声明,调用相关推荐
- Linux的shell脚本函数教程
Linux的shell脚本函数教程 一.shell介绍 二.shell函数的介绍 三.函数的定义 四.shell中函数使用示例 一.shell介绍 二.shell函数的介绍 三.函数的定义 四.she ...
- Shell脚本函数应用
记录:429 场景:Shell脚本函数应用,定义函数,函数调用,函数传参. 版本:CentOS Linux release 7.9.2009. 1.普通函数 示例普通函数是没有入参和返回值. 1.1脚 ...
- 在Shell脚本中声明和使用布尔变量示例
需要定义一个名为failed的bash变量,并将值设置为False.当从cron作业调用我们的脚本时,特定的任务可能会失败,然后我需要将failed转换为True.基于$failed,我需要发送一封电 ...
- Linux教程 - 在Shell脚本中声明和使用布尔变量示例
需要定义一个名为failed的bash变量,并将值设置为False.当从cron作业调用我们的脚本时,特定的任务可能会失败,然后我需要将failed转换为True.基于$failed,我需要发送一封电 ...
- shell有bool运算么_如何在shell脚本中声明和使用布尔变量?
我尝试使用以下语法在shell脚本中声明一个布尔变量:variable=$false variable=$true 它是否正确? 另外,如果我想更新该变量,我会使用相同的语法? 最后,使用布尔变量作为 ...
- Shell脚本函数(函数传参、递归、创建库)
Shell脚本函数 一.Shell函数 1.Shell函数定义 2.函数的返回值 return echo 二.函数传参 三.函数变量的作用范围 四.递归 1.阶乘 2.递归目录 五.创建库 一.She ...
- Shell脚本——函数、中断及退出、字符串处理
Shell函数 函数:在shell脚本中,将一些需要重复使用的操作,定义为公共的语句块,即可称为函数.通过使用函数,可以使脚本代码更加简洁,增强易读性,提高shell脚本的执行效率. 1)函数的定义方 ...
- 【shell】shell脚本实战-shell脚本函数详解
文章目录 前言 shell函数的定义 函数的优势 shell 函数的调用 实战案例 总结 前言 Shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接 ...
- Shell脚本函数简介及运用
目录 一.函数的作用 二.定义函数 三.调用函数 1.在脚本中调用函数 2.在函数中调用函数 四.函数传参 五.函数的返回值 六.函数的递归 七.函数及其变量的作用范围 八.外部脚本调用函数 一.函数 ...
最新文章
- 机器学习算法与Python实践之(二)支持向量机
- 机器学习算法加强——贝叶斯网络
- CMAK找不到相关编译器的问题
- 怎么查看父子级目录linux,如何查找linux中特定父目录的所有文件?
- WinAPI: waveInGetPosition - 获取当前输入设备的输入位置
- 【写作技巧】毕业设计的附录放在论文的哪个位置?
- 多媒体计算机的信息类型,多媒体信息主要有几种类型
- 15个使用 CSS3 制作的漂亮作品展示网站
- java ide eclipse,java IDE Eclipse
- python安装scipy数次失败,之后安装Anaconda后使用sublime切换python解释器后解决pip无法安装scipy问题
- python 数据集中随机选择作为测试集、验证集
- 携程酒店价格关键信息记录
- mysql workbench 安全模式_MySQL Workbench的安全模式解决
- 普通人的第一个Linux发行版-安装Deepin20.5
- 大学物理实验 空气比热容比的测定 数据处理
- 为知笔记离线同步 — 没网也可以随时查看笔记
- hive-5(窗口函数)
- 《AV1 Bitstream Decoding Process Specification》,译名:AV1比特流及解码规范-Chapter 05-语法结构-Section 01~08
- vps系统和云服务器搭建,vps系统和云服务器搭建
- 到Nexus私服的发包实践