欢迎光临
我们一直在努力

Shell编程——函数数组以及脚本调试(4)

Shell函数

将命令序列按格式写在一起
可方便重复使用命令序列

Shell函数定义

调用函数的方法
 函数名 [参数1] [参数2]

实例1

两个数字求和
通过sum(){}定义函数
#!/bin/bash
sum(){
 s=`expr $1 + $2 `
 return $s
}
sum 2 3
echo $?

#!/bin/bash
sum(){
 s=`expr $1 + $2 `
 echo $s
}
res=`expr $(sum 2 3) \* 2`
echo $?,$res

自定义函数

#!/bin/bash
#自定义函数
service_index(){
  echo "servicectl <servername> <start|stop|status|reload|restart>"
  return 1
}

service_version(){
  grep "CentOS.*release 7." /etc/centos-release > /dev/null && echo "centos7"
  grep "CentOS.*release 6." /etc/centos-release > /dev/null && echo "centos6"
  grep "CentOS.*release 5." /etc/centos-release > /dev/null && echo "centos5"
}
#调用前面两个函数
servicectl(){
  [[ -z $1 || -z $2 ]] && service_index
  [ $(service_version) = "centos7" ] && systemctl $2 ${1}.service || service $1 $2
}
[root@localhost ~]# source demo02.sh
[root@localhost ~]# servicectl httpd start

shell数组

应用场景包括

 获取数组长度
 获取元素长度
 遍历元素
 元素切片
 元素替换
 元素删除
 ...

数组定义方法

 方法一
数组名=(value0 value1 value2...)
 方法二
数组名=([0]=value [1]=value [2]=value...)
 方法三
列表名=”value0 value1 value2 ...”
数组名=($列表名)
 方法四
数组名[0]=”value”

数组包括的数据类型

 数值类型
 字符类型
   使用“”或‘’定义
获取数组长度
 ${数组名[@或/或*]}
 #读取某下标赋值
 ${数组名[下标]}
数组遍历

实例1

在数组中自加一输出结果
#!/bin/bash
num=(11 22 33 44 55)
for ((i=0;i<${#num[*]};i++))
do
  let num[i]++
  echo ${num[i]}
done
[root@localhost ~]# source demo03.sh 
12
23
34
45
56

Shell脚本调试

echo命令
bash命令
 语法
  sh [-nvx] 脚本名
 常用选项
  -n:不执行脚本,仅检查语法。没有语法问题不显示任何内容,有问题提示报错
  -v:执行脚本时,先显示脚本内容,然后执行脚本。存在错误时,给出错误提示
  -x:将执行的脚本内容输出到屏幕上
set命令
  set -x:开启调节模式
  set +x:关闭调节模式

谢谢阅读!!!

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。