<Zhuuu_ZZ>Shell自定义函数你真的都会吗

1.测试自定义函数

1.[function] 函数名(){函数体;} 可以有return语句,但只能return值类型
2.参数的传递:函数内部的参数列表只取决于内部调用函数时的参数列表,与脚本的参数(即./a.sh 参数)无直接影响

#!/bin/bash
function f(){
echo "hello,shell!"
}

a(){
b=1+1
c=$[ $1+1 ]
echo "a is running"
return $c
}
aa(){
b=1+1
c=$[ 1+1 ]
echo $c","$b
}
echo "----开始调用f---"
f
echo "----开始调用a---"
a 5
echo "---获取return:$?"
echo "---开始调用aa---"
aa
echo "不使用return获取aa最后一条:$?" #那么其调用的就是获取最后执行是否成功的状态,0为成功,否则失败

测试结果为:
在这里插入图片描述

2.图形函数

#!/bin/bash
#打印直角三角形
#1...直角在左下角
test1(){
for i in `seq 1 5`
do
  for j in `seq 1 $i`
  do
    echo -n '*'
  done
  echo ''
done
}
#2...直角在右下角
test2(){
for i in `seq 1 5`
do
  for j in `seq 1 $[5-$i]`
  do
    echo -n ' '
  done
for j in `seq 1 $i`
do
echo -n '*'
done
  echo
done
}
#3...直角在左上角
test3(){
for i in `seq 1 5`
do
for j in `seq 1 $[6-$i]`
do
echo -n '*'
done
echo
done
}
#4...直角在右上角
test4(){
for i in `seq 1 5`
do
for j in `seq 1 $[$i-1]`
do
echo -n ' '
done
for k in `seq 1 $[6-$i]`
do
echo -n '*'
done
echo
done
}
#等腰三角形
dengyao(){
for i in `seq 1 5`
do
for j in `seq 1 $[5-$i]`
do
echo -n ' '
done
for k in `seq 1 $i`
do
echo -n '* '
done
echo ''
done
}
case $1 in
triangle)test1;test2;test3;test4;dengyao
;;
*)echo "请选择正确的图形"
;;
esac

在这里插入图片描述

3.小数函数

#!/bin/bash
a=7.2
b=3.8
c=$(echo "scale=5;$a/$b" | bc)
pi=$(echo "scale=10;4*a(1)" | bc -l)

echo $c
echo $pi
if [ $(echo "$a > $b"|bc) -eq 1 ] #1为正确,0为错
then
echo "bigger"
fi

在这里插入图片描述

4.awk

#!/bin/bash
s="http://www.baidu.com/root/123.html"
echo $s | awk -F '//' '{print $1}'
echo $s | awk -F '/' '{print $5}'
echo $s | awk -F '/' '{print $5}' | awk -F '.' '{print $1}'
echo $s | awk -F '.' '{print $3}' | awk -F '/' '{print $1}'

在这里插入图片描述

5.日志脚本

将当天的日期作为文件名,将硬盘使用量作为内容导入到文件中

#!/bin/bash
a=`date '+%Y%m%d'` #获取日期
b=`df -h`   #获取硬盘使用情况
echo $b >> "$a".log   #重定向导入文件中

在这里插入图片描述

6.tomcat启动/停止脚本

JRE_HOME="/opt/jdk1.8.0_221/jre"
result=1
start_tomcat(){
echo "starting tomcat"
start_file=$CATALINA_BASH/startup.sh
if [[ -f $start_file ]] && [[ -x $start_file ]]
then
/bin/bash $start_file
result=$?
fi
}
stop_tomcat(){
echo "stopping tomcat"
stop_file=$CATALINA_BASH/shutdown.sh
if [[ -f $stop_file ]] && [[ -x $stop_file ]]
then
/bin/bash $stop_file
result=$?
fi
}
restart_tomcat(){
stop_tomcat
start_tomcat
}
case $1 in
start)start_tomcat
;;
stop)stop_tomcat
;;
restart)restart_tomcat
;;
*)echo "param is needed,should be {start|stop|restart}"
;;
esac
exit $result

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值