`

shell 判断条件

阅读更多

 

前言:

      无论什么编程语言都离不开条件判断。SHELL也不例外。

 

      if list then 
          do something here 
      elif list then 
          do another thing here 
      else 
         do something else here 
      fi  

 

   

EX1:

#!/bin/sh
SYSTEM=`uname -s`    #获取操作系统类型,我本地是linux
if [ $SYSTEM = "Linux" ] ; then     #如果是linux的话打印linux字符串
echo "Linux" 
elif [ $SYSTEM = "FreeBSD" ] ; then   
echo "FreeBSD" 
elif [ $SYSTEM = "Solaris" ] ; then 
echo "Solaris" 
else 
echo "What?" 
fi #ifend

 

 

 

基本上和其他脚本语言一样。没有太大区别。不过值得注意的是。[]里面的条件判断。

1、字符串判断

str1 = str2      当两个串有相同内容、长度时为真 

str1 != str2      当串str1和str2不等时为真 

-n str1        当串的长度大于0时为真(串非空) 

-z str1        当串的长度为0时为真(空串) 

str1           当串str1为非空时为真

2、数字的判断

int1 -eq int2    两数相等为真 

int1 -ne int2    两数不等为真 

int1 -gt int2    int1大于int2为真 

int1 -ge int2    int1大于等于int2为真 

int1 -lt int2    int1小于int2为真 

int1 -le int2    int1小于等于int2为真

3、文件的判断

-r file     用户可读为真 

-w file     用户可写为真 

-x file     用户可执行为真 

-f file     文件为正规文件为真 

-d file     文件为目录为真 

-c file     文件为字符特殊文件为真 

-b file     文件为块特殊文件为真 

-s file     文件大小非0时为真 

-t file     当文件描述符(默认为1)指定的设备为终端时为真

4、复杂逻辑判断

-a         与 

-o        或 

!        非

结尾

语法虽然简单,但是在SHELL里使用的时候,他的功能变得强大了。

=====================================================================

附 表:

[ -a FILE ]  如果 FILE 存在则为真。  

[ -b FILE ]  如果 FILE 存在且是一个块特殊文件则为真。  

[ -c FILE ]  如果 FILE 存在且是一个字特殊文件则为真。  

[ -d FILE ]  如果 FILE 存在且是一个目录则为真。  

[ -e FILE ]  如果 FILE 存在则为真。  

[ -f FILE ]  如果 FILE 存在且是一个普通文件则为真。  

[ -g FILE ] 如果 FILE 存在且已经设置了SGID则为真。 [ -h FILE ]  如果 FILE 存在且是一个符号连接则为真。  

[ -k FILE ]  如果 FILE 存在且已经设置了粘制位则为真。  

[ -p FILE ]  如果 FILE 存在且是一个名字管道(F如果O)则为真。  

[ -r FILE ]  如果 FILE 存在且是可读的则为真。  

[ -s FILE ]  如果 FILE 存在且大小不为0则为真。  

[ -t FD ]  如果文件描述符 FD 打开且指向一个终端则为真。  

[ -u FILE ]  如果 FILE 存在且设置了SUID (set user ID)则为真。  

[ -w FILE ]  如果 FILE 如果 FILE 存在且是可写的则为真。  

[ -x FILE ]  如果 FILE 存在且是可执行的则为真。  

[ -O FILE ]  如果 FILE 存在且属有效用户ID则为真。  

[ -G FILE ]  如果 FILE 存在且属有效用户组则为真。  

[ -L FILE ]  如果 FILE 存在且是一个符号连接则为真。  

[ -N FILE ]  如果 FILE 存在 and has been mod如果ied since it was last read则为真。  

[ -S FILE ]  如果 FILE 存在且是一个套接字则为真。  

[ FILE1 -nt FILE2 ]  如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not则为真。  

[ FILE1 -ot FILE2 ]  如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。  

[ FILE1 -ef FILE2 ]  如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。  

[ -o OPTIONNAME ]  如果 shell选项 “OPTIONNAME” 开启则为真。  

[ -z STRING ]  “STRING” 的长度为零则为真。  

[ -n STRING ] or [ STRING ]  “STRING” 的长度为非零 non-zero则为真。  

[ STRING1 == STRING2 ]  如果2个字符串相同。 “=” may be used instead of “==” for strict POSIX compliance则为真。  

[ STRING1 != STRING2 ]  如果字符串不相等则为真。 

[ STRING1 < STRING2 ]  如果 “STRING1” sorts before “STRING2” lexicographically in the current locale则为真。  

[ STRING1 > STRING2 ]  如果 “STRING1” sorts after “STRING2” lexicographically in the current locale则为真。  

[ ARG1 OP ARG2 ] “OP” is one of -eq, -ne, -lt, -le, -gt or -ge. These arithmetic binary operators return true if “ARG1” is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to “ARG2”, respectively. “ARG1” and “ARG2” are integers.

 

 

 

=========================

$n                 该变量与脚本被激活时所带的参数相对应。n是正整数,与参数位置相对应($1,$2...) 
$?                 前一个命令执行后的退出状态
$#                 
提供脚本的参数号

$*                 
所有这些参数都被双引号引住。若一个脚本接收两个参数,$*等于$1$2
 
$0                 正在被执行命令的名字。对于shell脚本而言,这是被激活命令的路径
$@                 
所有这些参数都分别被双引号引住。若一个脚本接收到两个参数,$@等价于
$1$2
$$                 当前shell的进程号。对于shell脚本,这是其正在执行时的进程ID
$!                 
前一个后台命令的进程号

 

分享到:
评论

相关推荐

    shell字符串比较判断是否为数字

    ### Shell字符串比较与数字判断详解 #### 一、概述 在Shell脚本编程中,进行字符串和数字的比较是一项常见的任务。本文将详细介绍如何在Shell脚本中进行字符串和数字的比较,包括基本的比较操作符及其使用场景,并...

    shell浅谈之二 运算符和if条件判断

    在Shell脚本编程中,运算符和if条件判断是核心组成部分,它们允许脚本根据不同的条件执行相应的操作。本文将详细探讨这些概念。 首先,我们要理解`if`条件判断是控制流程的重要工具,它允许程序根据指定的条件来...

    shell查看返回值,shell查看返回值,shell查看返回值,

    **文件`shell判断输入的参数是否正确.txt`相关:** 在编写接受用户输入的Shell脚本时,我们需要验证参数是否满足特定条件。例如,可以使用`if`语句检查参数数量或类型: ```bash if [ $# -ne 1 ]; then echo "Usage...

    shell中条件判断if中的-z到-d的意思

    在深入探讨shell脚本中`if`语句的条件判断逻辑之前,我们首先需要理解shell脚本的基础概念。Shell脚本是一种为Unix操作系统家族(包括Linux)编写的脚本语言,它允许用户通过一系列命令来自动化任务处理。`if`语句...

    Shell脚本IF条件判断和判断条件总结

    本文将深入探讨Shell脚本的IF条件判断语法以及常用的判断条件。 首先,IF条件判断的基本语法如下: ```bash if condition then commands elif condition then commands else commands fi ``` 这里的`condition...

    shell中条件判断if中的-z到-d的意思.txt

    在Shell脚本编程中,`if`语句是实现条件判断的重要工具之一。通过`if`语句,我们可以根据不同的条件来执行相应的代码块。而在Shell脚本中进行文件测试时,会用到一系列的选项,这些选项可以帮助我们检测文件的各种...

    Shell脚本—判断循环

    在Shell编程中,循环和判断语句是控制流程的核心工具,它们允许脚本执行重复的任务并基于条件作出决策。本章节将从Shell脚本的基础出发,深入探讨循环和判断语句的具体应用,包括如何监控程序、管理进程、监控磁盘...

    Shell程序设计 - 条件判断.mp4

    Shell程序设计 - 条件判断.mp4,Linux系统shell编程视频培训课程,大厂内部培训视频资料,都是纯纯的干货,欢迎下载学习!

    【shell脚本】shell脚本之条件判断if、for与while循环(shell脚本基础学习二)

    本文将深入探讨Shell脚本中的条件判断(if)、for循环和while循环,这些都是编写有效脚本的基础。 ### 条件判断 `if` `if` 语句在Shell脚本中用于根据特定条件执行不同的命令。以下是一些基本形式: 1. **单分支 ...

    第二十二章:shell条件语句及判断1

    本文主要探讨了Shell中的条件语句及其判断机制,包括条件测试、if条件语句以及一些实用的扩展功能。 首先,条件测试是进行判断的基础,它包含了对文件、整数、字符串以及逻辑的比较。文件测试使用`[`或`test`命令,...

    shell程序设计-变量条件控制结构函数

    在Shell中,我们可以使用`if`、`else`、`elif`来实现条件判断。例如: ```bash if [ condition ]; then command1 elif [ another_condition ]; then command2 else command3 fi ``` 这里的`condition`可以是文件...

    shell中条件判断if中的-a到-z的意思

    详细描述了shell脚本中,if判断文件时用到字母参数的含义,,以及逻辑判断的意义如:-nt/-ot/-ef等等

    shell中条件测试.docx

    在Linux Shell脚本编程中,条件测试是...这些条件测试是编写Shell脚本的基础,可以用来创建复杂的逻辑控制,实现自动化任务中的各种条件判断和流程控制。熟练掌握这些条件测试,将使你在Shell脚本编程中更加得心应手。

    Linux运维-3.Shell编程-12 shell编程-136条件判断3.avi

    Linux运维-3.Shell编程-12 shell编程-136条件判断3.avi

    Linux运维-3.Shell编程-12 shell编程-134条件判断1.avi

    Linux运维-3.Shell编程-12 shell编程-134条件判断1.avi

    Linux运维-3.Shell编程-12 shell编程-135条件判断2.avi

    Linux运维-3.Shell编程-12 shell编程-135条件判断2.avi

    Shell脚本中判断输入参数个数的方法

    本文将详细介绍如何在Shell脚本中判断输入参数的个数以及相关的条件判断。 首先,Shell脚本中有一个内置变量`$#`,它表示当前脚本接收到的命令行参数的个数。例如,如果你有一个脚本,用户需要提供一个参数,你可以...

    判断Linux Shell环境变量是否存在

    ### Linux Shell 判断环境变量是否存在的方法 在Linux系统中,环境变量是非常重要的配置项,它们定义了系统的行为以及各种程序运行时所依赖的环境。因此,了解如何判断某个环境变量是否存在对于编写高效的Shell脚本...

    shell中字符串处理方

    为了更好地理解这些技术的实际应用,我们可以编写一个简单的Shell脚本来判断一个文件是否为tar文件。假设我们有以下脚本: ```bash #!/bin/bash # 接受一个文件名作为参数 filename="$1" # 使用变量扩展从文件名...

    『忘了再学』Shell流程控制 — 33、if条件判断语句(一).doc

    单分支的 if 语句是最简单的条件判断形式,它只包含一个判断条件,当条件满足时执行相应的程序。其基本语法结构如下: ```bash if [ 条件判断式 ]; then 程序 fi ``` 要注意的是: - `fi` 用于结束 if 语句,与...

Global site tag (gtag.js) - Google Analytics