码农网

网站首页> 系统运维> Linux

shell脚本的函数

众衡网络科技

一、系统函数

用户名日志加时间戳

[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


shell 脚本函数

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

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

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

最近更新
热门素材
html5卡通章鱼素材,几何图形抽象设计

html5卡通章鱼素材,几何图形抽象设计

图片素材

html文字动画特效,文字虚线边框

html文字动画特效,文字虚线边框

文字特效

Bootstrap点击左侧垂直导航菜单全屏网页切换特效

Bootstrap点击左侧垂直导航菜单全屏网页切换特效

导航菜单

js+css3透明渐变风格导航菜单特效

js+css3透明渐变风格导航菜单特效

导航菜单

8款经典的css网站顶部导航栏样式

8款经典的css网站顶部导航栏样式

图片素材

js+css3网站顶部自适应导航栏菜单特效

js+css3网站顶部自适应导航栏菜单特效

图片素材

jQuery自定义添加删除表格行内容特效

jQuery自定义添加删除表格行内容特效

图片素材

jQuery+CSS3漂亮的下拉菜单选择框美化特效

jQuery+CSS3漂亮的下拉菜单选择框美化特效

css3实例

jQuery文字公告无限滚动轮播特效

jQuery文字公告无限滚动轮播特效

css3实例

jQuery+Layui省市区城市三级联动菜单选择特效

jQuery+Layui省市区城市三级联动菜单选择特效

css3实例