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脚本函数声明,调用相关推荐

  1. Linux的shell脚本函数教程

    Linux的shell脚本函数教程 一.shell介绍 二.shell函数的介绍 三.函数的定义 四.shell中函数使用示例 一.shell介绍 二.shell函数的介绍 三.函数的定义 四.she ...

  2. Shell脚本函数应用

    记录:429 场景:Shell脚本函数应用,定义函数,函数调用,函数传参. 版本:CentOS Linux release 7.9.2009. 1.普通函数 示例普通函数是没有入参和返回值. 1.1脚 ...

  3. 在Shell脚本中声明和使用布尔变量示例

    需要定义一个名为failed的bash变量,并将值设置为False.当从cron作业调用我们的脚本时,特定的任务可能会失败,然后我需要将failed转换为True.基于$failed,我需要发送一封电 ...

  4. Linux教程 - 在Shell脚本中声明和使用布尔变量示例

    需要定义一个名为failed的bash变量,并将值设置为False.当从cron作业调用我们的脚本时,特定的任务可能会失败,然后我需要将failed转换为True.基于$failed,我需要发送一封电 ...

  5. shell有bool运算么_如何在shell脚本中声明和使用布尔变量?

    我尝试使用以下语法在shell脚本中声明一个布尔变量:variable=$false variable=$true 它是否正确? 另外,如果我想更新该变量,我会使用相同的语法? 最后,使用布尔变量作为 ...

  6. Shell脚本函数(函数传参、递归、创建库)

    Shell脚本函数 一.Shell函数 1.Shell函数定义 2.函数的返回值 return echo 二.函数传参 三.函数变量的作用范围 四.递归 1.阶乘 2.递归目录 五.创建库 一.She ...

  7. Shell脚本——函数、中断及退出、字符串处理

    Shell函数 函数:在shell脚本中,将一些需要重复使用的操作,定义为公共的语句块,即可称为函数.通过使用函数,可以使脚本代码更加简洁,增强易读性,提高shell脚本的执行效率. 1)函数的定义方 ...

  8. 【shell】shell脚本实战-shell脚本函数详解

    文章目录 前言 shell函数的定义 函数的优势 shell 函数的调用 实战案例 总结 前言 Shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接 ...

  9. Shell脚本函数简介及运用

    目录 一.函数的作用 二.定义函数 三.调用函数 1.在脚本中调用函数 2.在函数中调用函数 四.函数传参 五.函数的返回值 六.函数的递归 七.函数及其变量的作用范围 八.外部脚本调用函数 一.函数 ...

最新文章

  1. 机器学习算法与Python实践之(二)支持向量机
  2. 机器学习算法加强——贝叶斯网络
  3. CMAK找不到相关编译器的问题
  4. 怎么查看父子级目录linux,如何查找linux中特定父目录的所有文件?
  5. WinAPI: waveInGetPosition - 获取当前输入设备的输入位置
  6. 【写作技巧】毕业设计的附录放在论文的哪个位置?
  7. 多媒体计算机的信息类型,多媒体信息主要有几种类型
  8. 15个使用 CSS3 制作的漂亮作品展示网站
  9. java ide eclipse,java IDE Eclipse
  10. python安装scipy数次失败,之后安装Anaconda后使用sublime切换python解释器后解决pip无法安装scipy问题
  11. python 数据集中随机选择作为测试集、验证集
  12. 携程酒店价格关键信息记录
  13. mysql workbench 安全模式_MySQL Workbench的安全模式解决
  14. 普通人的第一个Linux发行版-安装Deepin20.5
  15. 大学物理实验 空气比热容比的测定 数据处理
  16. 为知笔记离线同步 — 没网也可以随时查看笔记
  17. hive-5(窗口函数)
  18. 《AV1 Bitstream Decoding Process Specification》,译名:AV1比特流及解码规范-Chapter 05-语法结构-Section 01~08
  19. vps系统和云服务器搭建,vps系统和云服务器搭建
  20. 到Nexus私服的发包实践

热门文章

  1. 出现生存危机时的决策与管理行为
  2. a标签有关用法以及锚点定位;
  3. 普乐蛙VR体验馆设备|VR航天科普|VR文旅项目解决方案
  4. tar命令 zcvf zxvf 和 jcvf jxvf
  5. imgaug数据增强神器:第四章 增强关键点/界标
  6. ZYNQ裸板:BRAM篇
  7. makefile 的ifeq,filter,strip 简单使用
  8. hybris impex导入 联合主键对象
  9. 华为路由用户添加与删除
  10. Clubhouse创始人为自己女儿创建了改变世界的社交应用