一、系统函数

1.basename基本语法
basename [string / pathname][suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。

2、案例
(1)截取该/home/laoxiao/14for循环语句-4.sh路径的文件名称

[root@mylinux2 shell]# basename /home/shell/14for循环语句-4.sh
14for循环语句-4.sh

选项:suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。

[root@mylinux2 shell]# basename /home/shell/14for循环语句-4.sh .sh
14for循环语句-4
[root@mylinux2 shell]# basename /home/shell/14for循环语句-4.sh 语句-4.sh
14for循环

3、dirname基本语法
dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))

[root@mylinux2 shell]# dirname /home/shell/14for循环语句-4.sh
/home/shell
[root@mylinux2 shell]# dirname /home/zhilong/msb/abc/mulu/66.txt
/home/zhilong/msb/abc/mulu

4、综合运用
将/opt/test/目录下的所有文件改为以.txt结尾

 dir="/opt/test/"for f in `opt/test/*.txt`;do#f就是opt/test目录下的文件filename=`basename $f.txt .txt`dist_name=filename".sh"mv $f $dir$dist_name
done

二、 自定义函数

1.基本语法

[ function ] funname[()]
{Action;
[return int;]
}
funname

注意:

(1)必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先编译。
(2)函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255)
(3)可以采用标准输出:echo来作为函数的返回值

2、通过自定义函数计算输入的2个参数的和

 1 #!/bin/bash2 3 #自定义的一个函数4 function sum(){5 6     s=$[$1+$2]7     return $s8 9 }10 11 sum 100 20012 13 echo $?

执行结果为:44

[root@mylinux2 shell]# bash 17自定义函数1.sh
44

分析:执行结果为什么是44呢?明显不对,什么原因呢?
因为return后跟数值n(0-255)

 1 #!/bin/bash2 3 #自定义的一个函数4 function sum(){5 6     s=$[$1+$2]7     return $s8 9 }10 11 sum 10 20012 13 echo $?

执行结果为:210

[root@mylinux2 shell]# bash 17自定义函数1.sh
210

3、解决当2个数的和大于255的方法
可以采用标准输出:echo来作为函数的返回值

1 #!/bin/bash2 3 #自定义的一个函数4 function sum(){5 6     let s=$1+$27 8     echo $s9 }10 11 result=`sum 100 200`12 13 echo $result
[root@mylinux2 shell]# bash 18自定义函数.sh
300

三、计算1到n的阶乘

1 #!/bin/bash2 3 if [ $# -ne 1 ];then4     echo "参数错误,程序错误"5     exit 36 fi7 8 #任何一个大于1的数字,它的阶乘=n*(n-1)的阶乘9 10 function jiecheng(){11     n=$112     if [ $n -le 1 ];then13         echo 1    #当成n=1的时候函数的返回值14         return 0  #返回的是执行状态15     elif [ $n -gt 1 ];then16         let pre_n=n-117         temp=`jiecheng $pre_n`  ##计算n-1的阶乘18         let result=n*temp19         echo $result20         return 021     fi22 23 }24 25 jiecheng $1

Shell之系统函数和自定义函数相关推荐

  1. Python之系统函数、自定义函数、模块、递归合集

    一.函数(function)引入 1.函数(计算机函数)是程序中一段相对独立的代码,这段代码能够实现某一项具有独立.完整的功能.指可以直接被另一段程序代码引用的程序代码. 2.函数分为系统函数和自定义 ...

  2. 在python中使用关键字define定义函数_python自定义函数def的应用详解

    这里是三岁,来和大家唠唠自定义函数,这一个神奇的东西,带大家白话玩转自定义函数 自定义函数,编程里面的精髓! def 自定义函数的必要函数:def 使用方法:def 函数名(参数1,参数2,参数-): ...

  3. excel中DATE(year,month,day)函数——oracle自定义函数

    @oracle自定义函数写excel中DATE函数 oracle自定义函数写excel中DATE函数 EXCEL中DATE函数逻辑为DATE(year,month,day) 含义:DATE(年,月,日 ...

  4. 内置函数、自定义函数

    编程语言的函数都可以分为两类:内置函数和自定义函数. 内置函数分为 数字相关的内置函数 # abs(x) 求绝对值print(abs(-10)) #10 """ divm ...

  5. Hive函数(内置函数(字符串函数,数学函数,日期函数,集合函数,条件函数,聚合函数,表生成函数)和自定义函数(自定义函数创建流程,临时函数,永久函数)))(四)

    Hive函数(内置函数和自定义函数) 一.内置函数 1.字符串函数 (1)ascii (2)base64 (3)concat (4)concat_ws (5)format_number (6)subs ...

  6. c语言自定义函数格式化,自定义函数的形式

    c语言程序设计题:请用自定义函数的形式编程实现,代码: #include 请用自定义函数的形式编程实现 CSS布局HTML小编今天和大家分享 s = m. + n. + k.,m.n.k 从键盘输入( ...

  7. pandas编写自定义函数、使用apply函数应用自定义函数基于Series数据生成新的dataframe

    pandas编写自定义函数.使用apply函数应用自定义函数基于Series数据生成新的dataframe 目录 pandas编写自定义函数.使用apply函

  8. 自定义_Excel中的自定义函数(自定义函数的基础内容)

    各位朋友,你们好. 最近和网友沟通交流Excel问题,好些问题都没法直接实现,因此用了很多自定义函数,也给头条里的朋友写过几个自定义函数(比如颜色计算的函数.提取不重复内容的函数.汉字转拼音的函数-- ...

  9. C语言-函数(自定义函数)

    C语言中函数的分类: 1 库函数 2 自定义函数 自定义函数 如果库函数能干所有的事情,那还要程序员做什么? 所以更重要的是自定义函数 函数的组成: ret_type    fun_name (par ...

  10. 一文弄懂python中的函数(自定义函数,匿名函数,高阶函数与解析式)

    什么是函数,如何在 Python 程序中定义函数呢? 说白了,函数就是为了实现某一功能的代码段,只要写好以后,就可以重复利用. python中的自定义函数 Python 的函数具有非常灵活多样的参数形 ...

最新文章

  1. [C]计算某一天是该年中的第几天
  2. 数据库维护优化及后期改进约定.实践篇
  3. ReactNative-----环境搭建二(android)
  4. c语言 结构数组读取,有关文件读写到结构体数组问题;
  5. leetcode 283. 移动零(Java版)
  6. mysql 时间函数大全_mysql常用的日期函数汇总
  7. 单图说TDSQL;OceanBase 2.2 事务引擎核心功能;穿云箭2.0版发布;RMAN DUPLICATE配置19C DG;外键上有无索引的影响;MySQL8.0 索引新功能;GaussDB C
  8. aov建立Java模拟,JAVA
  9. 应用算法的实际情况——简单就是美
  10. 如何面试前端工程师?
  11. linux装完系统需要输入密码,在安装Linux系统的过程中,一定要设置root用户的密码 (5.0分)...
  12. 微信视频提取及接收文件路径
  13. Apple Pencil 一代和二代有什么区别
  14. 程序员鄙视链, 所有工程师都鄙视php工程师, 为什么
  15. 豆角炒肉 肉末豆腐
  16. csv文件用什么打开_什么是CSV文件,如何打开它?
  17. Matlab-LSB信息隐藏实验
  18. ReleaseDC、DeleteDC(买二送一DeleteObject)简单解析
  19. MySQL之CentOS安装MySQL
  20. Fortran文件操作-open

热门文章

  1. javascript高级程序设计pdf_一个老牌程序员推荐的JavaScript的书籍,看了真的不后悔!...
  2. 编程小白学python知乎周刊_在知乎上学 Python - 入门篇
  3. c++ 浮点数转换成字符串_Python如何处理数据?如何把数据转换成我们想要的?三种处理方法...
  4. 成功解决ImportError: Something is wrong with the numpy installation. While importing we detected an olde
  5. ML之LiRLassoR:利用boston房价数据集(PCA处理)采用线性回归和Lasso套索回归算法实现房价预测模型评估
  6. DL之DCGAN:基于keras框架利用深度卷积对抗网络DCGAN算法对MNIST数据集实现图像生成
  7. 成功解决TypeError: Encoders require their input to be uniformly strings or numbers. Got [‘float‘, ‘int‘,
  8. ML之MIC:利用某数据集计算机最大信息系数MIC并可视化MIC矩阵热图及其代码实现
  9. 7.1 TensorFlow笔记(基础篇):加载数据之预加载数据与填充数据
  10. uc/os-II(source)各种文件含义集锦