Shell编程之条件语句

2021/7/21 7:06:17

本文主要是介绍Shell编程之条件语句,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

结构

条件测试

  • 文件测试与整数测试

  • 字符串测试与逻辑测试

if语句

  • if单分支语句

  • if双分支语句

  • if多分支语句

case分支语句

 

 

 

条件测试操作

test命令

测试表达式是否成立,若成立则返回0,否则返回其他数值。

格式1:test 条件表达式

格式2:[ 条件表达式 ]

  

文件测试

[ 操作符 文件或目录 ]

  

常用的测试操作符

文件比较运算符
-e filename 如果filename存在,则为真 [ -e /var/log/syslog ]
-d filename 如果filename为目录,则为真 [ -d /tmp/mydir ]
-f filename 如果filename为常规文件,则为真 [ -f /usr/bin/grep ]
-L filename 如果filename为符号链接,则为真 [ -L /usr/bin/grep ]
-r filename 如果filename可读,则为真 [ -r /var/log/syslog ]
-w filename 如果filename可写,则为真 [ -w /var/mytmp.txt ]
-x filename 如果filename可执行,则为真 [ -L /usr/bin/grep ]
filename1 -nt filename2 如果filename1比filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ]
filename1 -ot filename2 如果filename1比filename2旧,则为真 [ /boot/bzlmage -ot arch/i386/boot/bzlmage ]

 

[root@localhost ~]# [ -e first.sh ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -e first1.sh ]
[root@localhost ~]# echo $?
1

  

整数值比较

[ 整数1 操作符 整数2 ]  

常用的测试操作符

算术比较运算符
num1 -eq num2 等于 [ 3 -eq $mynum ]
num1 -ne num2 不等于 [ 3 -ne $mynum ]
num1 -lt num2 小于 [ 3 -lt $mynum ]
num1 -le num2 小于或等于 [ 3 -le $mynum ]
num1 -gt num2 大于 [ 3 -gt $mynum ]
num1 -ge num2 大于或等于 [ 3 -ge $mynum ]
   

字符串比较

格式1:
[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]

  

格式2:
[ -z 字符串 ]
 

常用的测试操作符

  • =:字符串内容相同
  • !=:字符串内容不同, !号表示相反的意思
  • -z:字符串内容为空
  字符串比较运算符(请注意引号的使用,这是防止空格扰乱代码的好方法)
-z string 如果string长度为零,则为真 [ -z "$myvar" ]
-n string 如果string长度非零,则为真 [ -n "$myvar" ]
string1 = string2 如果string1与string2相同,则为真 [ "$myvar" = "one two three" ]
string1 != string2 如果string1与string2不同,则为真 [ "$myvar" != "one two three" ]

示例

####测试当前语言环境
[root@localhost ~]# echo $LANG
zh_CN.UTF-8
[root@localhost ~]# [ $LANG != "en.US" ] && echo "Not en.US"
Not en.US
[root@localhost ~]# 

  

 

  

逻辑测试

格式1:
[ 表达式1 ] 操作符 [ 表达式2 ] …

  

格式2:
命令1 操作符 命令2 …  

常用的测试操作符

  • -a或&&:逻辑与,“而且”的意思
  • -o或||:逻辑或,“或者”的意思
  • !:逻辑否
使用或运算符时,如果||前的条件成立,则直接结束,不会去看后面的条件      

if语句的结构

单分支结构

if 条件测试操作
    then 命令序列
fi

  

 

 

多分支结构

if 条件测试操作1
    then 命令序列1
elif 条件测试操作2
    then 命令序列2
else
    命令序列3
fi

  

实例

判断分数所在区间,反馈不同的结果

#!/bin/bash
read -p "input score:" nums
if [ $nums -ge 90 ];then
  echo "exellent"
elif [ $nums -ge 80 ];then
  echo "well done"
elif [ $nums -ge 70 ];then
  echo "not very well"
elif [ $nums -ge 60 ];then
  echo "not good"
else
  echo "bad"
fi

  

case语句结构

  • case多分支结构 

case 变量值 in
模式1)
        命令序列1
        ;;
模式2)
        命令序列2
        ;;
        ……
*)
        默认命令序列
esac

  

 

总结

条件测试的语法

  • 文件测试、整数值比较、字符串比较、逻辑测试

if条件语句的语法

  • 单分支、双分支、多分支

case多分支语句的语法

 

 

 



这篇关于Shell编程之条件语句的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程