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