1. 函数的定义
方法1:
function_name () {
statement
} 方法2:
function function_name () {
statement
} --先定义后使用 例:模拟用函数写一个服务启动,关闭,重启的脚本 (要求有start,stop,restart,status) --以sshd服务为例写的服务脚本
#!/bin/bash start() {
pid=`pidof sshd` if [ -z $pid ];then
/usr/sbin/sshd
echo "正在启动 sshd: [确定]"
else
echo "服务sshd(pid $pid)已存在"
fi
} function stop() {
pid=`pidof sshd` if [ ! -z $pid ];then
echo "服务sshd 已停"
else
killall sshd &> /dev/null
echo "停止 sshd: [确定]"
fi } restart() {
pid=`pidof sshd` if [ -z $pid ]; then
echo "停止 sshd:[失败]"
/usr/sbin/sshd
echo "正在启动 sshd:[确定]"
else
echo "停止 sshd:[确定]"
/usr/sbin/sshd
echo "正在启动 sshd:[确定]"
fi } status(){
pid=`pidof sshd`
if [ -z $pid ];then
echo "服务sshd 已停"
else
echo "服务sshd (pid $pid)正在运行..."
fi } case "$1" in
start )
#启动sshd服务
start
;;
stop )
# 停止sshd
stop
;;
restart )
restart
;;
status )
status
;;
* )
echo "用法: /root/ssh2.sh {start|stop|restart|status}"
esac 2. 函数的参数
fun() {
echo $1 --接收参数,$1=arg1,$2=arg2,$0是文件名
echo $2
}
fun arg1 arg2 ... --传参
实例: #!/bin/bash add() {
echo $1+$2 | bc
}
sub() {
echo $1-$2 | bc
} # 使用$1来接受add或sub,$2$3分别是2个数字
case "$1" in
add )
add $2 $3
;;
sub )
sub $2 $3
;;
* )
exit
esac 3. 函数的返回值
fun(){
return value --使用return返回一个值(数字,只能是整数)
} fun --调用函数
echo $? --函数的返回值 #!/bin/sh
#函数传参
add() {
return $[$1+$2]
}
sub() {
return $[$1-$2]
} case "$1" in
add )
add $2 $3
echo "$2+$3的和是$?"
;;
sub )
sub $2 $3
echo "$2-$3的差是$?"
;;
* )
echo "usage: sh $0 arg1 arg2 arg3"
esac
------------------------ 使用read输入一个整数,把数字中的所有数字转换成英文单词
如:2345 转换为 two three four five 提示:需要计算输入的整数的长度,然后进行循环,截取整数中的单一字符(cut -c),对截取的单一字符
#!/bin/bash read -p "请输入一个整数:" num length=`echo ${#num}` #${#string} 返回$string的长度 translate() {
case "$1" in
0 )
echo -n " zero "
;;
1 )
echo -n " one "
;;
2 )
echo -n " two "
;;
3 )
echo -n " three "
;;
4 )
echo -n " four "
;;
5 )
echo -n " five "
;;
6 )
echo -n " six "
;;
7 )
echo -n " seven "
;;
8 )
echo -n " eight "
;;
9 )
echo -n " nine "
esac
} for (( i=1; i<=$length; i++ ))
do
char=`echo $num |cut -c$i`
translate $char
done
echo 三. 数组 数组的定义: # abc=( 1 2 a b "sfsda sf sfdsa" ) --定义一个数组,可以是数字,字母,或者字符串 # echo ${abc[0]} --数组的下标是0不是1
1
# echo ${abc[1]}
2
# echo ${abc[2]}
a
# echo ${abc[3]}
b
# echo ${abc[4]}
sfsda sf sfdsa --查看数组的全部值
# echo ${abc[*]}
1 2 a b sfsda sf sfdsa
# echo ${abc[@]}
1 2 a b sfsda sf sfdsa --查看数组的个数
# echo ${#abc[*]}
5 # array3=(`ifconfig eth0|grep Mask`)
# echo ${array3[0]}
inet
# echo ${array3[1]}
addr:10.1.1.35
# echo ${array3[2]}
Bcast:10.1.1.255
# echo ${array3[3]}
Mask:255.255.255.0 echo ${array[2]} | cut -d: -f2

  

最新文章

  1. rhel 7.0 配置centos yum源(2016/12/8),成功!
  2. 控制台telnet连接后无法关闭
  3. 安装 Dubbo 注册中心(Zookeeper-3.4.6)--单节点
  4. [转载] Tmux 速成教程:技巧和调整
  5. 转载:完全卸载oracle11g步骤
  6. 用canvas实现图片滤镜效果详解之视频效果
  7. Win7 SP1语言包微软官方下载地址及使用方法 2
  8. java 学习笔记4
  9. Java 基础 标识符的命名
  10. 从头编写 asp.net core 2.0 web api 基础框架 (3)
  11. C语言程序设计第二次作业—————顺序结构
  12. asp.net mvc简单实现基于Razor的分页控件
  13. paramiko__摘抄
  14. UBNT ex-r +netgear gs105e v2 +ap 设置vlan 步骤记录 及相关知识整理
  15. Android数据存储:SQLite
  16. ELK日志方案--使用Filebeat收集日志并输出到Kafka
  17. PHP 设计模式 单例模式 工厂模式 注册模式
  18. [UI基础][QQ登陆界面]
  19. Redis的强大之处
  20. Ubuntu16.04配置单机版Zookeeper和Kafka

热门文章

  1. 基于docker搭建laravel项目
  2. 不借助 Javascript,利用 SVG 快速构建马赛克效果
  3. Redis HyperLogLog 是什么?这些场景使用它,让我枪出如龙,一笑破苍穹
  4. JavaScript学习基础1
  5. 2022.02.21 UB
  6. 今天遇到 Could not determine type for: java.util.List
  7. git冲突解决、线上分支合并、luffy项目后台登陆注册页面分析引入
  8. [AcWing 796] 子矩阵的和
  9. java基础4.20
  10. Solon 1.7.6 发布,更现代感的应用开发框架