命令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
、-gt
、3
、]
是[
命令的四个参数,它们之间必须用空格隔开。命令test
或[
的参数形式是相同的,只不过test
命令不需要]
参数。以[
命令为例,常见的测试命令如下表所示:
测试命令
[ -d DIR ] |
如果DIR 存在并且是一个目录则为真 |
[ -f FILE ] |
如果FILE 存在且是一个普通文件则为真 |
[ -z STRING ] |
如果STRING 的长度为零则为真 |
[ -n STRING ] |
如果STRING 的长度非零则为真 |
[ STRING1 = STRING2 ] |
如果两个字符串相同则为真 |
[ STRING1 != STRING2 ] |
如果字符串不相同则为真 |
[ ARG1 OP ARG2 ] |
ARG1 和ARG2 应该是整数或者取值为整数的变量,OP 是-eq (等于)-ne (不等于)-lt (小于)-le (小于等于)-gt (大于)-ge (大于等于)之中的一个 |
和C语言类似,测试条件之间还可以做与、或、非逻辑运算:
带与、或、非的测试命令
[ ! EXPR ] |
EXPR 可以是上表中的任意一种测试条件,!表示逻辑反 |
[ EXPR1 -a EXPR2 ] |
EXPR1 和EXPR2 可以是上表中的任意一种测试条件,-a 表示逻辑与 |
[ EXPR1 -o EXPR2 ] |
EXPR1 和EXPR2 可以是上表中的任意一种测试条件,-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 Script ,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他...
有关Shell脚本的一篇文章。 正文 shell脚本开头需要加上 #!/bin/bash 或 #!/bin/sh。 #! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。 以#开头的行视为注释。 脚本的名字以.sh...
Shell编程实验 一、实验目的 了解 Shell 的作用和主要分类。 了解 Bash的一般语法规则。 练习编写简单的shell程序。 二、实验内容 1.Shell变量的定义及其使用。 2.位置参数和环境变量。 3.Shell中的特殊字符。 4....
语法:Test-Path <路径> 说明:这里的路径可以是:文件、文件夹、HKLM路径、环境变量env:路径 下面来举一些例子,让大家更方便懂: 代码如下:Test-Path D:\q.txt Test-Path C:\Scripts\Archive -pathType ...
test命令是shell环境中测试条件表达式的实用工具,下面来看看test命令的用法介绍: 语法 test(选项) 选项 -b<文件>:如果文件为一个块特殊文件,则为真; -c<文件>:如果文件为一个字符特殊文件,则为真...
815.6 awk实现计算 / 835.7 declare(同typeset)命令的用法 / 835.8 $[]符号的运算示例 / 835.9 基于Shell变量输入read命令的运算实践 / 84第6章 Shell脚本的条件测试与比较 / 926.1 Shell脚本的条件测试 / ...
我不是研究linux下的东西的,所以这里只对shell脚本的用法做一个介绍,把我自己在使用过程中出现的问题记录下来,同时也是写下一些shell脚本语法的规则,方便以后查看。先来学习一下条件语句if的用法,通过这一个...
各种在线编程课程都使用TestMyCode进行运动测试和提交。 要求 Java运行时环境8 Linux,Mac OS X或Microsoft Windows 其他类似Unix的系统也可以工作,但未经测试 如果要自动补全,则需要Bash或与Bash兼容的shell ...
实验 1. 分析 shell ####Dylan Flanders 和 Gautam Gupta CS111 第 1A 部分,2015 年冬季 已知的问题 如果我们的程序在输入文件... 运行make check以针对两个测试脚本test-t-ok.sh和test-t-bad.sh运行 shell。 运行mak
前言 公司开发使用docker,每次登陆自己开发机总要输入 ssh user_name@ip_...在编写ssh自动登陆脚本之前,先说一下shell脚本的基础,此基础不是一些语法什么的,网上到处都是,这里总结了一下shell脚本的运行机制~
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语言CoLiS语言的语法,解析器和解释器。笔记文件记录了有关CoLiS语言设计的讨论,统计数据,决策和假设。 注释的标题可以在源代码中引用,以使用格式NOTES[Heading name]来阐明用法。测验使用make test运行make...
test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。 test 命令期望在命令行中找到一个参数,当 shell 没有为变量赋值时,则将该变量视为空。这意味着在处理脚本时,一旦脚本寻找的...
⾼级关键字 SetupForMS 连接到需要测试的SPLX服务器,发送⼀个shell脚本 "setup.sh" ,然后发送⼀个命令去执⾏"setup.sh". 再接着, 如下图所⽰, Setup 负责在执⾏测试⽤例之前的清理⼯作. 这⾥⾼级关键字 ...
Shell 文件包含的语法格式如下: . filename # 注意点号(.)和文件名中间有一空格 或 source filename 实例 创建两个 shell 脚本文件。 test1.sh 代码如下: #!/bin/bash # author:软件开发网 # url:www.mscto.com ...
服务器安装运行引导程序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相关的语法和常见用法总结了下,方便以后随时回顾和查阅! 1. 综述 ...
比如freewrap test.tcl -i test.ico,ico文件需要满足一下三种条件之一:1、16*16 16位色 2、32*32 16位色 3、32*32 2位色,如果是其他ico文件格式,在生成可执行文件时还是会采用默认的图标。 -o 指定生成的可...
bin一些在运行/测试代码中有用的shell脚本 install.sh配置您的Shell环境以构建您的编译器和参考编译器 setup465.sh更改您要使用的当前实验室 runtest.sh针对参考编译器运行编译器以进行回归测试 classes -的词法和...
-:表示无此权限 所有者:u user 所属组:g group 其他人:o other 2:表示硬链接数。 第一个root:是所有者。 第二个root:是所属组。 4096:目录大小,不是目录中所有文件的大小。 12-01 20:52是创建时间或...