Shell脚本学习(四)

Shell脚本学习(四)

1.until循环结构

1.1until语句的使用范围

重复测试某个条件,只要条件不成立,则立刻反复执行

1.2until循环的语法

until 条件测试操作

do

命令提示符

done

2.until循环的小案例

打印1-50的和

vim untildemo.sh
#!/bin/bash
i=1
sum=0
until [ $i -eq 51 ]
do
  let sum+=$i
  let i++
done
echo "和为$sum"
chmod +x untildemo.sh

测试结果

[root@lab opt]# ./untildemo.sh 
和为1275

3.shell函数

3.1shell函数的特点

将命令的序列按格式写在一起

可方便重复使用的命令系列

3.2shell函数的语法结构

[function] 函数名(){
命令序列
[return x]
}
函数的调用方法
函数名() [参数1] [参数2]
返回值
echo "值" //直接调用
return 状态码 //$? 调用

4.shell涵数的例子

vim shellfunctiondemo1.sh
#!/bin/bash
function aaa(){    //创建函数方法体
   echo 'bbb'      
   return  6       //返回状态码为6
}
aaa                //调用aaa函数
chmod +x shellfunctiondemo1.sh  //赋予脚本可执行的权限
./shellfunctiondemo1.sh   //执行脚本
bbb                     //输出的结构
echo $?                 //输出状态码 
6

5.说说最近写shell脚本的心得

从开始学shell脚本到现在,大概有4天了,这四天中,我写了很多shell脚本。其实呢,我想说的是,有时候遇到需求时,我们要冷静分析,从需求入手。然后就是不要把学其他语言的思维固定在那一方面。其次就是,shell脚本需要练习,不能长时间不练,勤能补拙,努力学习。下面就说说我今天在写脚本中遇到的问题吧。

今天呢,老师上课讲了shell函数和调用函数,今天一整个下午都在处理和解决这方面的问题。出错的原因就是我学过其他语言,对函数这一块有一种根深蒂固的思维就是函数写完了,就得需要调用,才能实现,比如Java、Python等等。这就导致了今天遇到的问题:我在写完函数后,下意识的就在下一行调用了,然后怎么测试都不成功,后来看了别人的代码,一下就解决了这个问题。我还是拿例子来说吧。

vim functiontest.sh
#!/bin/bash
function servicectl(){
//判断输入的是否有格式错误
if [ $# -lt 2 ]
then
   echo "Usage:`basename $0` <services> [<funcbuttons>]"
   exit 0
fi
//判断服务是否存在
services=`ls /usr/sbin |grep "$1"`
if [ $services = "$1" ]
then
    echo "当前的服务是$1存在"
else
    echo "当前的服务不存在,请先进行下载。"
fi
//测试当前系统的型号及版本
xitong=`cat /etc/centos-release|awk '{print $1}'`
banben=`cat /etc/centos-release|awk '{print $4}'|awk -F\. '{print $1}'`
if [ $xitong = "CentOS" ] && [ $banben = "7" ]
then
    echo "当前的系统版本为:$xitong $banben支持servicectl服务"
else
    echo "当前的系统版本为:$xitong $banben不支持servicectl服务"
fi
//匹配服务是否开启
case $2 in
start)
    service $1 $2
    ;;
stop)
    service $1 $2
    ;;
restart)
    service $1 $2
    ;;
*)
    echo "无法识别的命令"
esac


}
//我呢就在这边调用了一下,(servicectl $1 $2)
chmod +x functiontest.sh
source functiontest.sh //如果上面调用的话就会报错退出,然后写入~/.bashrc文件中后就会导致进不去了。这里的代码经测试没有问题。只是说说我的错误在哪儿,并且希望大家不要和我犯同样的错误。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值