shell脚本学习_分支_3

学习目标:

掌握条件分支语句语法:if、case

 

总结:

1- 条件判断的或逻辑为:-o

2-  test用法和[ ]用法等价。注意对于位置变量可以用等于号等符号,对于整形、字符、文件只能用对应的判断符号!!

3-  条件为真时等于0!

4- if判断中用 [], []外部、内部的前后不能由空格

5-  case匹配项只能是字符串,每个分支以;;结束

 

 

正文:

1- if

基本原里和C语言一样,只是细节差异。

 

a- 基本语法

/*1- 无else分支*/
if 条件
then
    do somtthing
fi


/*2- 有else分支*/
if 条件
then
    do somtthing
else
    do something
fi

/*3- 多个else分支*/
if 条件
then 
    do something
elif 条件
then
    do something
else
    do something
fi

 

b- 示例

说明:

编写一个脚本,用于判断输入的文件是什么类型的。

对于文件类型可以参考:https://blog.csdn.net/weijuqie0697/article/details/81705312

 

总结:

1- 条件判断的或逻辑为:-o

2-  test用法和[ ]用法等价

3-  条件为真时等于0!

4- if判断中用 [], []外部、内部的前后不能由空格

 

脚本文件:

#!/bin/bash

#入参检查。-o表示或逻辑
if [ $# -le 0 -o  $# -gt 1 ]
then
	echo "input param is zero or to much!"
	exit
fi

#判断文件是否存在。
#注意[]内部、外部由空格隔开;条件if ! test -e $1和if ! [ -e $1 ]等价
if ! [ -e $1 ]
then 
	echo "file not exit"
	exit
fi

if [ -f $1 ]
then 
	echo "it's file"
elif [ -d $1 ]
then
	echo "it's direct"
elif [ -L $1 ]
then
	echo "it's bdev"
elif [ -c $1 ]
then
	echo "it's cdev"
elif [ -b $1 ]
then
	echo "it's bdev"
elif [ -S $1 ]
then
	echo "it's socket"
else
	echo "other type file"
fi

演示示例:

#终端中输入下面命令,打印文件类型
./shell.sh 文件名  

可以通过下面命令去/dev路径下找字符设备(c)、块设备文件(d)、链接文件(L)、普通文件(f)、目录(d)

ls -l /dev | grep "^c"  //在/dev路径下查找文件类型为字符设备的文件

 

2- case

a- 基本语法

和C语言大同小异:

I- 只能是字符串

II- 每个分支以两个分号;;结束

III- 某个分支有两个条件可以用或”|‘

III- *)表示C语言里的default分支,最后可以不加双分号;;

case 字符串 in
    条件1)
            do something
            ;;
    条件2 | 条件3)
            do something
            ;;
    *)
            do something
esac

 

b- 示例程序

使用case编写判断文件类型的程序

#!/bin/bash

#入参检查。-o表示或逻辑
if [ $# -le 0 -o  $# -gt 1 ]
then
	echo "input param is zero or to much!"
	exit
fi

#判断文件是否存在。
#注意[]内部、外部由空格隔开;条件if ! test -e $1和if ! [ -e $1 ]等价
if ! [ -e $1 ]
then 
	echo "file not exit"
	exit
fi

#获取文件类型,为了强行用case也是醉了。。。
if [ -f $1 ]
then 
	type=f
elif [ -d $1 ]
then
	type=d
else
	type=o
fi

case $type in
	f)
	echo "it's file"
	;;
	d)
	echo "it's direct"
	;;
	*)
	echo "other type file"
esac

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值