shell脚本编程(流程控制)

一.条件结构

1.1test命令

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

条件为真返回 0,条件为假返回 1.

语法1:

test expression  #expression就是判断条件

语法2:

[ expression ]   #省略test的简写形式,用[]替代,需要注意的是expression两边都需要有空格

1.2test判断的参数

因为test可以进行数值、字符和文件三个方面的判断,各方面详细参数如下:

1.字符串判断 

参数用法举例判断含义真(返回值)假(返回值)
-ntest -n STRING字符串长度不为零01
-ztest -z STRING字符串长度为001
= [ STRING1 = STRING2 ]判断两个字符串是否一样01
!=[ STRING1 != STRING2 ]判断两个字符串是否不一样01

2.数字判断

eq等于
ge大于等于
gt大于 
ne不等于
le小于等于 
lt小于

3.文件判断

参数说明
-e 文件名如果文件存在则为真
-r 文件名如果文件存在且可读则为真
-w 文件名如果文件存在且可写则为真
-x 文件名如果文件存在且可执行则为真
-s 文件名如果文件存在且至少有一个字符则为真
-d 文件名如果文件存在且为目录则为真
-f 文件名如果文件存在且为普通文件则为真
-c 文件名如果文件存在且为字符型特殊文件则为真
-b 文件名如果文件存在且为块特殊文件则为真

二.if语句 

2.1流控制

在一个shell脚本中的命令执行顺序称作脚本的流。大多数脚本会根据一个或多个条件来改变它们的流。 流控制命令:能让脚本的流根据条件而改变的命令称为条件流控制命令 
exit语句:退出程序的执行,并返回一个返回码,返回码为0正常退出,非0为非正常退出,例如: 
exit 0

条件判断
If代码返回0表示真,非0为假。

if语句语法如下: 
if [ $1 -eq 1 ];
then
      echo '等于1'
elif [ $1 -eq 2 ]
then
			echo '等于二'
else
			echo '既不等一,也不等于二'
fi

复杂逻辑

多个条件联合
逻辑与
if [ $condition1 ] && [ $condition2 ] 
if [ $condition -a $condition2 ]
if [[ $condition1 && $condition2 ]]
逻辑或
if [ $condition1 ] || [ $condition2 ] 
if [ $condition -o $condition2 ]
if [[ $condition1 || $condition2 ]]
# test 和 [] 中 我们可以使用 [ $condition1 ] && [ $condition2 ] 或者 [ $condition -a $condition2 ]

# 在 [[]] 这种情况,我们可以直接使用[[ $condition1 && $condition2 ]]
建议在if中直接使用[[]]这种方式,这种方式更加稳定。[[]] shell的一个命令。
-a &&  逻辑与 and 两端的条件都可以成立
-o ||  逻辑或 or  两端的条件有一段成立就行

 2.2case语句

case
case 语句是 shell 中流控制的第二种方式,语法如下: 
case $word in
     pattern1)
						list1
						;; 
     pattern2)
						list2
						;; 
     patternN)
          	              listN
          	              ;;
		   *)
						list*
						;; 
esac
命令;;表明流应该跳转到case语句的最后,类似C语言中的break指令。

语法介绍: 

case $var in
模式1)
				执行1
				;;
模式2)
				执行2
				;;
模式3)
				执行3
				;;
*)
				执行4
esac

第一行: 声明case关键字调用case语法, 紧跟的“变量”一般为用户的输入值, in代表从下方的各个模式进行匹配 
第2-4行: 匹配到“模式1”后进行命令的输出或执行, 模式1: 一般为字符或数值
第11-12行: 当用户输入的字符不存在匹配模式时, 直接执行或打印*)下的命令或语句

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨影萧萧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值