`
shicheng
  • 浏览: 162659 次
  • 性别: 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脚本基础学习|理论+实操

    Shell Script ,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他...

    Shell脚本:结构与执行

    有关Shell脚本的一篇文章。 正文 shell脚本开头需要加上 #!/bin/bash 或 #!/bin/sh。 #! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。 以#开头的行视为注释。 脚本的名字以.sh...

    Linux Shell编程实验

    Shell编程实验 一、实验目的 了解 Shell 的作用和主要分类。 了解 Bash的一般语法规则。 练习编写简单的shell程序。 二、实验内容 1.Shell变量的定义及其使用。 2.位置参数和环境变量。 3.Shell中的特殊字符。 4....

    PowerShell中使用Test-Path命令检查文件或文件夹路径是否存在示例

    语法:Test-Path <路径> 说明:这里的路径可以是:文件、文件夹、HKLM路径、环境变量env:路径 下面来举一些例子,让大家更方便懂: 代码如下:Test-Path D:\q.txt Test-Path C:\Scripts\Archive -pathType ...

    Linux shell中的test命令用法教程

    test命令是shell环境中测试条件表达式的实用工具,下面来看看test命令的用法介绍: 语法 test(选项) 选项 -b<文件>:如果文件为一个块特殊文件,则为真; -c<文件>:如果文件为一个字符特殊文件,则为真...

    跟老男孩学Linux运维:Shell编程实战

    815.6 awk实现计算 / 835.7 declare(同typeset)命令的用法 / 835.8 $[]符号的运算示例 / 835.9 基于Shell变量输入read命令的运算实践 / 84第6章 Shell脚本的条件测试与比较 / 926.1 Shell脚本的条件测试 / ...

    shell脚本编程之if语句学习笔记

    我不是研究linux下的东西的,所以这里只对shell脚本的用法做一个介绍,把我自己在使用过程中出现的问题记录下来,同时也是写下一些shell脚本语法的规则,方便以后查看。先来学习一下条件语句if的用法,通过这一个...

    tmc-cli:TMC的命令行客户端

    各种在线编程课程都使用TestMyCode进行运动测试和提交。 要求 Java运行时环境8 Linux,Mac OS X或Microsoft Windows 其他类似Unix的系统也可以工作,但未经测试 如果要自动补全,则需要Bash或与Bash兼容的shell ...

    Profiling-Shell:CS111 Lab 1 的分析外壳,2015 年冬季

    实验 1. 分析 shell ####Dylan Flanders 和 Gautam Gupta CS111 第 1A 部分,2015 年冬季 已知的问题 如果我们的程序在输入文件... 运行make check以针对两个测试脚本test-t-ok.sh和test-t-bad.sh运行 shell。 运行mak

    shell实现SSH自动登陆的方法示例

    前言 公司开发使用docker,每次登陆自己开发机总要输入 ssh user_name@ip_...在编写ssh自动登陆脚本之前,先说一下shell脚本的基础,此基础不是一些语法什么的,网上到处都是,这里总结了一下shell脚本的运行机制~

    Linux C 一站式学习

    5. Shell脚本语法 5.1. 条件测试:test [ 5.2. if/then/elif/else/fi 5.3. case/esac 5.4. for/do/done 5.5. while/do/done 5.6. 位置参数和特殊变量 5.7. 函数 6. Shell脚本的调试方法 32. 正则表达式 1. 引言 2. ...

    colis-language:Shell脚本的符号分析器

    CoLiS语言CoLiS语言的语法,解析器和解释器。笔记文件记录了有关CoLiS语言设计的讨论,统计数据,决策和假设。 注释的标题可以在源代码中引用,以使用格式NOTES[Heading name]来阐明用法。测验使用make test运行make...

    test命令 检查条件是否成立

    test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。 test 命令期望在命令行中找到一个参数,当 shell 没有为变量赋值时,则将该变量视为空。这意味着在处理脚本时,一旦脚本寻找的...

    RobotFrameWork测试案例.pdf

    ⾼级关键字 SetupForMS 连接到需要测试的SPLX服务器,发送⼀个shell脚本 "setup.sh" ,然后发送⼀个命令去执⾏"setup.sh". 再接着, 如下图所⽰, Setup 负责在执⾏测试⽤例之前的清理⼯作. 这⾥⾼级关键字 ...

    Shell 文件包含

    Shell 文件包含的语法格式如下: . filename # 注意点号(.)和文件名中间有一空格 或 source filename 实例 创建两个 shell 脚本文件。 test1.sh 代码如下: #!/bin/bash # author:软件开发网 # url:www.mscto.com ...

    puppet

    服务器安装运行引导程序bash scripts/puppet-server-install.sh测试(可选) 编辑脚本/facts.txt vi scripts/facts.txt运行人偶代理测试脚本bash scripts/puppet-agent-test.sh --client-test运行木偶代理puppet ...

    Shell常见用法小记

    最近发现shell脚本在平常工作中简直算一把瑞士军刀,很多场景下用shell脚本能实现常用的简单需求,而之前都没怎么学习过shell,就趁机把shell相关的语法和常见用法总结了下,方便以后随时回顾和查阅! 1. 综述 ...

    freewrap651

    比如freewrap test.tcl -i test.ico,ico文件需要满足一下三种条件之一:1、16*16 16位色 2、32*32 16位色 3、32*32 2位色,如果是其他ico文件格式,在生成可执行文件时还是会采用默认的图标。 -o 指定生成的可...

    comp465-tools:COMP 465编译器项目的支持文件

    bin一些在运行/测试代码中有用的shell脚本 install.sh配置您的Shell环境以构建您的编译器和参考编译器 setup465.sh更改您要使用的当前实验室 runtest.sh针对参考编译器运行编译器以进行回归测试 classes -的词法和...

    linux教程——很使用的那种

    -:表示无此权限 所有者:u user 所属组:g group 其他人:o other 2:表示硬链接数。 第一个root:是所有者。 第二个root:是所属组。 4096:目录大小,不是目录中所有文件的大小。 12-01 20:52是创建时间或...

Global site tag (gtag.js) - Google Analytics