03 shell编程之case语句与函数

本文所有内容均来自当年博主当年学习笔记,若有不足欢迎指正

心得:shell脚本可读性非常差,编写完之后应该有相应的注释,是否之后修改起来会非常麻烦。

Shell编程之case语句与函数

学习目标:

掌握case语句编程

掌握shell函数的使用

目录结构:

 金沙官网线上 1

 

 

#set 查看bash中变量

Case语句

#unset VARNAME 撤销变量

Case语句的作用

l  使用case语句改写多分支可以使脚本结构更加清晰,层次分明

l  针对变量不同取值,执行不同的命令序列

 

#bash -n 脚本.sh 实现测试文件语法是否有错误

Case语句的结构

case 变量值 in

模式1)

       命令序列1

       ;;

模式2)

       命令序列2

       ;;

*)

       默认命令序列

csac

 

case变量=模式1 ?是,则执行命令序列1,否,则判断变量=模式2 ?是,则执行命令序列2,否,则判断变量=模式3 ?是,则执行命令序列3,否,则执行默认命令序列。

 

实例:

l  击键类型识别脚本,判断输入的是字母还是数字还是其他字符

[root@poll ~]# vi a.sh

#!/bin/bash

#this is zifupanduan

read -p "请输入一个字符:" key

case $key in

[a-z]|[A-Z])

        echo "您输入的是字母。"

        ;;

[0-9])

        echo "您输入的是数字"

        ;;

[/]|[?]|[,])

        echo "您输入的是$key"

        ;;

*)

        echo "您输入的是其他字符"

esac

 

#bash -x 脚本.sh 显示整个脚本过程

shell函数

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

l  可方便重复使用命令序列

l  Shell函数定义

[function] 函数名(){

命令序列

[return x]

}

l  调用函数的方法

[root@poll ~]# vi sum.sh

#!/bin/bash

#this is SUM

SUM(){

echo "这是一个求和运算"

read -p "请输入第一个数:" A

read -p "请输入第二个数:" B

echo "你输入的两个数分别为:$A $B"

SUM=$(($A+$B))

echo "两个数的和为:$SUM"

#return $(($A+$B))

}

SUM

#echo "两个数的和为:$?"

l  Linux系统中有很多服务器启动脚本

定义了丰富的shell函数

嵌套了各种语句,如if语句等

可参考其编写的服务器启动脚本

[root@poll scripts]# vi /etc/init.d/network

……

if [ -f /etc/sysconfig/pcmcia ]; then

    . /etc/sysconfig/pcmcia

fi

 

 

# Check that networking is up.

[ "${NETWORKING}" = "no" ] && exit 6

 

# if the ip configuration utility isn't around we can't function.

[ -x /sbin/ip ] || exit 1

 

 

CWD=$(pwd)

cd /etc/sysconfig/network-scripts

……

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本章初步结束,下一节讲循环语句

1、循环

for循环,适用于循环次数已知的场景。

while循环:适用于循环次数未知的场景。

-------------------------------------------------- 

循环:while、for、until 


whi CONDITION; do

statment; 

done

条件满足、进入循环。条件不满足、退出循环。


until CONDITION; do 

statment

done

条件满足、退出循环。条件不满足、进入循环


break:提前退出循环

continue:提前结束本轮循环,而进入下一轮循环


for 变量 in 列表; do

循环体

done


for ((expr1;expr2;expr3)); do

循环体

done


如何生产列表:

{1..100}

seq 起始数 步进长度 结束数        #seq  1 2 10

for  I  in  `seq 1 $1`;do  done


双分支if语句

if 判断条件;then

statement1

statement2

else

statem ent3

fi


多分支的if语句:

if  判断条件1; then

statement1

elif 判断条件2; then

statemnet2

elif 判断条件3;then

statemnet3

fi


case  $1  in

1)

statement1;;

2)

statement2;;

*)

statement3;;

esac


2、条件判断:

条件测试的表达式:

[ expression ]

[ [expression] ]

test expression

整数比较:

-eq:测试两个整数是否相等;  比如 [ $A -eq $B ]

-ne:测试两个整数是否不等;不等,为真,相等,为假。

-gt:测试一个数是否大于另一个数,大于,为真;否则为假;

-lt:测试一个数是否小于另 一个数,小于,为真,否则为假;

-ge:大于或等于

-le:小于或等于

字符测试:

==: 测试是否相等,相等为真,不等为假

!=:测试是否不等,不等为真,相等为假

>

<

-n:测试制定字符串是否为空,空则真,不空则假。 null

文件测试:

-e FILE: 测试文件是否存在 exist

金沙官网线上,-f FILE:测试文件是否为普通文件 file

-d FILE:测试指定路径是否为目录 directory

-r FILE:测试当前用户对指定文件是否由读取权限。 read

-w FILE: write

-x FILE: eXecute

-z FILE:测试参数是否为空 zero

本文由金沙官网线上发布于操作系统,转载请注明出处:03 shell编程之case语句与函数

您可能还会对下面的文章感兴趣: