命令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
分享到:
相关推荐
- **条件测试**:使用 `[ ]` 或者 `test` 命令来进行条件判断。 - **循环控制**:支持多种循环结构,如 `for` 循环、`while` 循环和 `until` 循环。 - **分支控制**:使用 `if-else` 结构进行条件分支。 - **函数...
在 Shell 脚本中,可以通过使用 `test` 命令来进行比较操作,这在条件判断中非常有用。 1. **字符串比较**: - `=`:测试两个字符串是否相等。 - `-z`:测试字符串是否为空。 - `-n`:测试字符串是否非空。 - `...
### Shell脚本语法详解 #### 一、Shell脚本基础 **Shell脚本**是一种用于自动化执行Linux或Unix系统中的任务的脚本语言。通过编写Shell脚本,用户可以组合多个命令来完成复杂的操作,提高工作效率。Shell脚本的...
根据提供的文件信息,我们可以深入探讨Linux运维技术课程中关于Shell编程的部分内容,特别是Shell编程-2部分所涉及的关键知识...这些知识点对于理解和编写有效的Shell脚本至关重要,也是Linux运维人员必备的技能之一。
条件测试是Shell脚本中的重要组成部分,用于根据特定条件执行不同的命令。常用的条件测试命令有两种形式: 1. **使用`test`命令**:语法格式为`test 条件表达式`。 2. **使用方括号`[]`**:语法格式为`[ 条件表达式...
- **格式**: `test [条件]` 或 `[ 条件 ]`。 - **字符串测试** - `str1 = str2`: 字符串相等。 - `str1 != str2`: 字符串不相等。 - `-z str`: 字符串为空。 - `-n str`: 字符串非空。 - **整数测试** - `-eq`:...
- **基本语法**:`test` 命令用于测试某个条件是否为真。 - **常用选项**: - `-d`:检查是否为目录。 - `-f`:检查是否为普通文件。 - `-L`:检查是否为符号链接。 - `-r`:检查是否有读取权限。 - `-s`:检查...
Linux Shell脚本中的测试语句是编写自动化任务和系统管理脚本时不可或缺的一部分。它们允许我们检查各种条件,以确定是否执行特定的操作。在Shell中,有三种主要的测试语句形式:`test`、`\[` 和 `\[\[\]`。 1. `...
- 条件表达式与测试命令:学习if、elif、else语句,以及test和[[命令]用于条件判断。 - 循环结构:掌握for、while、until循环的用法,以及如何处理数组。 - 函数定义与调用:了解如何在Shell脚本中创建和使用函数...
#### 四、Shell条件测试 **`test`命令:** `test`命令用于检查某个条件是否成立,根据结果返回0或非0的退出状态。它可以用于比较字符串、整数或判断文件属性。 - 字符串比较: - `-z`: 检查字符串是否为空。 - `-...
在Linux和Unix系统中,`test`命令是一个用于条件...了解并熟练运用这些条件测试是编写高效、健壮的shell脚本的关键。通过结合if、while、until等控制流结构,可以实现对程序流程的精确控制,从而实现自动化任务的执行。
二、Shell脚本语法 1. 注释:学习如何使用#进行注释,以解释脚本的各个部分。 2. 输入/输出重定向:掌握如何改变命令的标准输入、输出和错误输出。 3. I/O重定向与管道:理解如何使用>、<、>>、|等符号进行文件操作...
- **条件测试:** 使用 `[ ]` 或 `test` 命令来进行条件判断。 - **逻辑运算符:** `&&` 表示逻辑与,`||` 表示逻辑或。 **3. 循环结构:** - **for 循环:** `for var in list; do commands; done`:遍历列表中的...
### 经典Shell用法总结 #### Linux基本命令详解 **1.1 cp命令** - **功能**: `cp` 命令用于复制文件或目录。这是一个非常实用且强大的命令,能够帮助用户轻松地管理文件系统。 - **语法**: `cp [选项] 源文件或...