`
shicheng
  • 浏览: 165689 次
  • 性别: Icon_minigender_1
  • 来自: 泉州
社区版块
存档分类
最新评论

Shell脚本语法--条件测试:test [

阅读更多

命令test[可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1(注意与C语言的逻辑表示正好相反)。例如测试两个数的大小关系:

$ VAR=2
$ test $VAR -gt 1
$ echo $?
0
$ test $VAR -gt 3
$ echo $?
1
$ [ $VAR -gt 3 ]
$ echo $?
1

虽然看起来很奇怪,但左方括号[确实是一个命令的名字,传给命令的各参数之间应该用空格隔开,比如,$VAR-gt3][命令的四个参数,它们之间必须用空格隔开。命令test[的参数形式是相同的,只不过test命令不需要]参数。以[命令为例,常见的测试命令如下表所示:

          测试命令

[ -d DIR ] 如果DIR存在并且是一个目录则为真
[ -f FILE ] 如果FILE存在且是一个普通文件则为真
[ -z STRING ] 如果STRING的长度为零则为真
[ -n STRING ] 如果STRING的长度非零则为真
[ STRING1 = STRING2 ] 如果两个字符串相同则为真
[ STRING1 != STRING2 ] 如果字符串不相同则为真
[ ARG1 OP ARG2 ] ARG1ARG2应该是整数或者取值为整数的变量,OP-eq(等于)-ne(不等于)-lt(小于)-le(小于等于)-gt(大于)-ge(大于等于)之中的一个

和C语言类似,测试条件之间还可以做与、或、非逻辑运算:

带与、或、非的测试命令

[ ! EXPR ] EXPR可以是上表中的任意一种测试条件,!表示逻辑反
[ EXPR1 -a EXPR2 ] EXPR1EXPR2可以是上表中的任意一种测试条件,-a表示逻辑与
[ EXPR1 -o EXPR2 ] EXPR1EXPR2可以是上表中的任意一种测试条件,-o表示逻辑或

例如:

$ VAR=abc
$ [ -d Desktop -a $VAR = 'abc' ]
$ echo $?
0

注意,如果上例中的$VAR变量事先没有定义,则被Shell展开为空字符串,会造成测试条件的语法错误(展开为[ -d Desktop -a = 'abc' ]),作为一种好的Shell编程习惯,应该总是把变量取值放在双引号之中(展开为[ -d Desktop -a "" = 'abc' ]):

$ unset VAR
$ [ -d Desktop -a $VAR = 'abc' ]
bash: [: too many arguments
$ [ -d Desktop -a "$VAR" = 'abc' ]
$ echo $?
1

分享到:
评论

相关推荐

    shell脚本编程电子书

    - **条件测试**:使用 `[ ]` 或者 `test` 命令来进行条件判断。 - **循环控制**:支持多种循环结构,如 `for` 循环、`while` 循环和 `until` 循环。 - **分支控制**:使用 `if-else` 结构进行条件分支。 - **函数...

    LINUX shell编程.doc

    在 Shell 脚本中,可以通过使用 `test` 命令来进行比较操作,这在条件判断中非常有用。 1. **字符串比较**: - `=`:测试两个字符串是否相等。 - `-z`:测试字符串是否为空。 - `-n`:测试字符串是否非空。 - `...

    shell脚本语法

    ### Shell脚本语法详解 #### 一、Shell脚本基础 **Shell脚本**是一种用于自动化执行Linux或Unix系统中的任务的脚本语言。通过编写Shell脚本,用户可以组合多个命令来完成复杂的操作,提高工作效率。Shell脚本的...

    运维技术课程 Linux学习教程 Shell编程-2 共31页.pptx

    根据提供的文件信息,我们可以深入探讨Linux运维技术课程中关于Shell编程的部分内容,特别是Shell编程-2部分所涉及的关键知识...这些知识点对于理解和编写有效的Shell脚本至关重要,也是Linux运维人员必备的技能之一。

    Shell编程实例.pdf

    - **条件测试**: 使用 `[ ]` 或 `test` 命令进行条件判断。 - **循环控制**: - `for` 循环: 遍历一组值。 - `while` 循环: 当条件满足时持续执行。 - `until` 循环: 与 `while` 相反,当条件不满足时继续执行。...

    shell学习笔记-2018-01-09

    条件测试是Shell脚本中的重要组成部分,用于根据特定条件执行不同的命令。常用的条件测试命令有两种形式: 1. **使用`test`命令**:语法格式为`test 条件表达式`。 2. **使用方括号`[]`**:语法格式为`[ 条件表达式...

    Shell编程 pdf

    - **格式**: `test [条件]` 或 `[ 条件 ]`。 - **字符串测试** - `str1 = str2`: 字符串相等。 - `str1 != str2`: 字符串不相等。 - `-z str`: 字符串为空。 - `-n str`: 字符串非空。 - **整数测试** - `-eq`:...

    linux shell

    - **基本语法**:`test` 命令用于测试某个条件是否为真。 - **常用选项**: - `-d`:检查是否为目录。 - `-f`:检查是否为普通文件。 - `-L`:检查是否为符号链接。 - `-r`:检查是否有读取权限。 - `-s`:检查...

    linux Shell脚本之测试语句.docx

    Linux Shell脚本中的测试语句是编写自动化任务和系统管理脚本时不可或缺的一部分。它们允许我们检查各种条件,以确定是否执行特定的操作。在Shell中,有三种主要的测试语句形式:`test`、`\[` 和 `\[\[\]`。 1. `...

    Shell编程大全 高清PDF版

    - 条件表达式与测试命令:学习if、elif、else语句,以及test和[[命令]用于条件判断。 - 循环结构:掌握for、while、until循环的用法,以及如何处理数组。 - 函数定义与调用:了解如何在Shell脚本中创建和使用函数...

    Linux Shell 入门基础

    #### 四、Shell条件测试 **`test`命令:** `test`命令用于检查某个条件是否成立,根据结果返回0或非0的退出状态。它可以用于比较字符串、整数或判断文件属性。 - 字符串比较: - `-z`: 检查字符串是否为空。 - `-...

    linux的test命令[参考].pdf

    在Linux和Unix系统中,`test`命令是一个用于条件...了解并熟练运用这些条件测试是编写高效、健壮的shell脚本的关键。通过结合if、while、until等控制流结构,可以实现对程序流程的精确控制,从而实现自动化任务的执行。

    linux下的test命令详解

    Linux下的`test`命令是Shell脚本编程中不可或缺的一部分,用于执行条件检查并根据结果决定程序的流程。它是实现逻辑判断的关键工具,如`if`、`while`和`until`语句的基础。掌握`test`命令的用法能够极大地提升Shell...

    Shell脚本专家指南

    二、Shell脚本语法 1. 注释:学习如何使用#进行注释,以解释脚本的各个部分。 2. 输入/输出重定向:掌握如何改变命令的标准输入、输出和错误输出。 3. I/O重定向与管道:理解如何使用>、<、>>、|等符号进行文件操作...

    Linuxshell教程

    - **条件测试:** 使用 `[ ]` 或 `test` 命令来进行条件判断。 - **逻辑运算符:** `&&` 表示逻辑与,`||` 表示逻辑或。 **3. 循环结构:** - **for 循环:** `for var in list; do commands; done`:遍历列表中的...

    经典shell 用法总结

    ### 经典Shell用法总结 #### Linux基本命令详解 **1.1 cp命令** - **功能**: `cp` 命令用于复制文件或目录。这是一个非常实用且强大的命令,能够帮助用户轻松地管理文件系统。 - **语法**: `cp [选项] 源文件或...

Global site tag (gtag.js) - Google Analytics