网站首页> 系统运维> Linux> shell脚本的函数

shell脚本的函数

时间:2022-08-24 21:06:18 阅读:1186次 来源:互联网

一、系统函数

用户名日志加时间戳

[root@hadoop scripts]# vim cmd_test.sh
#!/bin/bash

filename="$1"_log_$(date +%s)
echo $filenam
[root@hadoop scripts]# chmod +x cmd_test.sh 
[root@hadoop scripts]# . cmd_test.sh zhangsan
zhangsan_log_1660710993

1.basename

1)基本语法

basename [string / pathname] [suffix]

功能描述:basename 命令会删掉所有的前 缀包括最后一个(‘/’)字符,然后将字符串显示出来。 basename 可以理解为取路径里的文件名称

选项:

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

2)案例实操

字符串剪切

[root@hadoop scripts]# basename /root/scripts/parameter.sh    #前面截取
parameter.sh
[root@hadoop scripts]# basename /root/scripts/afdfsg    #没有存在文件也可以截取
afdfsg
[root@hadoop scripts]# basename /root/scripts/parameter.sh .sh    #前后都截取
parameter

或者

[root@hadoop scripts]# vim parameter.sh
#!/bin/bash
echo '===============$n================'
echo scripts name:$(basename $0 .sh)
echo 1st parament: $1
echo 2nd parament: $2
echo '===============$#================'
echo parameter numbers: $#
echo '===============$*================'
echo $*
echo '===============$@================'
echo $@
[root@hadoop scripts]# ./parameter.sh a b
===============$n================
scripts name:parameter
1st parament: a
2nd parament: b
===============$#================
parameter numbers: 2
===============$*================
a b
===============$@================
a b

2.dirname

1)基本语法

dirname 文件绝对路径

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

dirname 可以理解为取文件路径的绝对路径名称

2)案例实操

截取路径最后一个/之前的路径

[root@hadoop scripts]# dirname /root/scripts/parameter.sh
/root/scripts
[root@hadoop scripts]# dirname ../scripts/parameter.sh
../scripts

或者

[root@hadoop scripts]# vim parameter.sh
[root@hadoop scripts]# cat parameter.sh
#!/bin/bash
echo '===============$n================'
echo scripts name:$(basename $0 .sh)
echo scripts path:$(cd $(dirname $0); pwd)    #前后执行命令,
echo 1st parament: $1
echo 2nd parament: $2
echo '===============$#================'
echo parameter numbers: $#
echo '===============$*================'
echo $*
echo '===============$@================'
echo $@
[root@hadoop scripts]# ./parameter.sh a b
===============$n================
scripts name:parameter
scripts path:/root/scripts
1st parament: a
2nd parament: b
===============$#================
parameter numbers: 2
===============$*================
a b
===============$@================
a b

二、自定义函数

1)基本语法

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

2)经验技巧

(1)必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行。不会像其它语言一 样先编译。

(2)函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将 以最后一条命令运行结果,作为返回值。return 后跟数值 n(0-255)

3)案例实操

计算两个输入参数的和。

第一种方法,相加的超过255会报错

[root@hadoop scripts]# vim fun_test.sh
#!/bin/bash

function add(){
	s=$[$1 + $2]
	echo "和:"$s
}

read -p "请输入第一个整数:" a
read -p "请输入第二个整数:" b

add $a $b
[root@hadoop scripts]# chmod +x fun_test.sh 
[root@hadoop scripts]# ./fun_test.sh 
请输入第一个整数:35
请输入第二个整数:67
和:102

第二种方法,相加的超过255不会报错,结果不对

[root@hadoop scripts]# vim fun_test.sh 
#!/bin/bash

function add(){
	s=$[$1 + $2]
	return $s
}

read -p "请输入第一个整数:" a
read -p "请输入第二个整数:" b

add $a $b
echo "和:" $?
[root@hadoop scripts]# ./fun_test.sh 
请输入第一个整数:35
请输入第二个整数:45
和: 80
[root@hadoop scripts]# ./fun_test.sh 
请输入第一个整数:156
请输入第二个整数:237
和: 137

第三种,更加完整,还可以求平方

[root@hadoop scripts]# vim fun_test.sh 
#!/bin/bash

function add(){
	s=$[$1 + $2]
	echo $s
}

read -p "请输入第一个整数:" a
read -p "请输入第二个整数:" b

sum=$(add $a $b)
echo "和的"$sum
echo "和的平方:"$[ $sum * $sum]
[root@hadoop scripts]# ./fun_test.sh 
请输入第一个整数:146
请输入第二个整数:237
和的383
和的平方:146689


本文地址:https://www.manongw.com/article/382.html

文章来源:转载于CSDN,转载网址为https://blog.csdn.net/m0_55834564/article/details/126439790

版权申明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 ezhongheng@126.com 举报,一经查实,本站将立刻删除。

相关文章
  • 本文主要介绍了Linux ssh服务器配置代码实例的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-11-11 15:09
  • 本文主要介绍了docker 安装solr8.6.2 配置中文分词器的方法的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-11-11 15:00
  • 本文主要介绍了Linux SecureCRT显示乱码解决方案的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-11-11 15:05
  • 本文主要介绍了Linux系统(Centos6.5以上)安装jdk教程解析的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-11-11 14:51
  • 本文主要介绍了Linux系统安装Tomcat并配置Service启动关闭的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-11-11 14:47
  • 本文主要介绍了linux查看添加删除swap分区详解的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-10-20 17:50
  • 本文主要介绍了shell之定时周期性执行脚本的方法示例的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-10-20 21:18
  • 本文主要介绍了Linux实现驱动模块传参过程解析的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-11-11 15:03
  • 本文主要介绍了shell 判断字符串是否存在数组中的实现示例的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-10-20 21:06
  • 本文主要介绍了什么是Linux? 服务器运维使用Linux需要学什么?的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-09-27 09:12