shell脚本编程之分支

本文详细介绍了Shell编程中的条件分支语句,包括单分支和双分支的用法,以及各种条件测试,如整数测试、字符测试和文件测试。重点讲述了条件测试的表达式形式,如[-eq, -ne, -gt, -lt]等,并演示了如何在bash脚本中运行和调试。最后提供两个练习案例,帮助读者巩固所学。" 122120916,11699971,乾元通X1S-5G多卡聚合路由器详解与应用,"['5G技术', '网络聚合', '路由器应用', '通信设备', '数据传输']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概述

接上一篇的shell变量,本篇将讲解shell的条件判断。条件分支语句在shell编程中使用较为广泛,本来接收单分支和双分支。秉承一个观点:技巧不在多,实用就行。所以掌握一个技能,使用熟练。若真有其他需求再学习其他技能。

 

2.用法

单分支if语句

if  判断条件; then

    statement1

    statement2

    ...

fi

 

双分支if语句

if 判断条件; then

    statement1

    statement2

    ...

else

    statement3

    statement4

    ...

fi

 

3.条件测试

条件测试只是判断条件中的一种,也可以直接使用命令进行条件。

例如

# 传递一个用户名参数给脚本,判断此用户的用户名跟基本组的组名是否一致,并将结果显示出来
#!/bin/bash

#判断传入的参数,用户是否存在
if  ! id $1 &>/dev/null; then
    echo "No such user."
    exit
fi

#判断此用户的用户名跟基本组的组名是否一致
if [ `id -n -u $1` == `id -n -g $1` ];then
    echo "Same"
else
    echo "None"
fi

 

条件测试类型

  •     整数测试
  •     字符测试
  •     文件测试

其中 条件测试的表示式    

  •     [ expression ]
  •     [[ expression ]]    
  •     test expression

ps:1."[[  ]]" bash的关键字

        2.[  ]  与 expression 之间必须要有空格隔开

 

整数测试(双目):

  •     -eq:  测试两个整数是否相等  $A -eq $B
  •     -ne:  测试两个整数是否不等
  •     -gt:   测试一个数是否大于另一个数
  •     -lt:    一个数是否小于另一个数
  •     -ge:  >=
  •     -le :  <=
INT1=61

INT2=63

1.[ $INT1 -eq $INT2 ]

2.[[ $INT1 -eq $INT2 ]]

3.test $INT1 -eq $INT2

 

字符测试

  • string1 ==/= string2   判断两字符串是否相等
  • string1 != string2    判断两字符串是否不等
  • -n string 测试指定字符串是否为空
  • -s string 测试指定字符串是否不为空

ps:1.[ $A = $B ]  等号两端要有空格

 

文件测试

  •     -e  FILE 测试文件是否存在
  •     -f   FILE 测试文件是否为普通文件
  •     -d  FILE 测试指定路径是否为目录
  •     -x  FILE 测试当前用户对指定文件是否有执行权限
  •     -r   FILE 测试当前用户对指定文件是否有读权限
  •     -w  FILE 测试当前用户对指定文件是否有写权限
[ -e /etc/inittab ]

[ -x /etc/rc.d/rc.sysinit ]

 

bash脚本的运行

1.编写好脚本后添加执行权限

    chmod +x   xxx.sh

    ./xxx.sh

 

2.直接用打开新bash进程,通过传参方式运行

 

   bash xxx.sh

 

bash -n 脚本  测试脚本是否有错误

bash -x 脚本 单步执行脚本 

 

 

组合条件测试

  • -a 逻辑与   同时满足  条件1 与 条件2 为真  
  • -o 逻辑或   满足 条件1 或者 条件2 一个为真
  • !  逻辑非
判断传入参数个数是否  1 < n <= 3 

if [ $# -gt 1 -a $# -le 3 ]    

if [ $# -gt 1 ] && [ $# -le 3 ]

 

4.练习

test1:给定一个用户

    1.如果其UID为0, 就显示为管理员

    2.否则,显示普通用户

#!/bin/bash

#



NAME=user1

if id -u $NAME -eq 0;then

    echo "admin"

else 

    echo "command"

fi

 

test2:判断脚本是否有至少一个传入参数

 

#!/bin/bash

#



if [ $# -lt 1 ]; then

    echo "User: ./file.sh ARG1 [ARG2 ...]"

    exit 7

else

    echo $*

fi

    

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值