3

如何在 bash 脚本中使用 test 命令

 1 year ago
source link: https://www.51cto.com/article/740429.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
377e05569a04af924601582be0939b0ae3bcba.jpg

如果命令或表达式有效,则 test 命令返回0,否则返回1。

使用 test 命令

test 命令的基本语法如下所示:

test “var1” operator “var2”

如果其中用到了变量,需要在变量名中使用双引号。 我们看下面的例子,使用 test 命令检查10是否等于20,以及10是否等于10:

$ test 10 -eq 20 && echo "true" || echo "false"

上面的命令中:

  • test - test 命令
  • 10 - 第一个变量
  • -eq - 比较运算符
  • 20 - 第二个变量

如果给定的表达式有效,则执行第一个命令,否则执行第二个命令。 在上述测试命令中,可以使用方括号 [] 来代替 test 命令。不过有一点需要记住,[ 标记和要比较的变量之间需要有空格:

[ 10 -eq 20 ] && echo "true" || echo "false"
c1c878a83f9d86019a1688742f7f66d8c72b26.jpg

除了整数以外,也可以在 bash 中使用 test 命令比较字符串,下面我们来看一些例子。

使用 test 命令比较字符串

检查字符串是否不为空

-n 选项用于检查字符串长度是否为非零。如果字符串不为空则返回 true,如果字符串为空,则返回 false:

$ [ -n "sam" ] && echo "True" || echo "False"
526f08c7785554f0872543633389e778062969.jpg

检查字符串是否为空

-z 选项用于检查字符串长度是否为零。如果字符串长度为零,则返回true,否则返回false:

$ [ -z "sam" ] && echo "True" || echo "False"

检查字符串是否相等

“=”运算符检查string1是否等于string2。如果两个字符串相等,则返回0;如果两个字符串不相等,则返回1:

$ [ "sam" = "SAM" ] && echo $? || echo $?

在这里,表达式略有不同。stdout 变量打印使用 $? 而不是 true 或 false。

检查字符串是否不相等

!=运算符检查 String1 是否不等于 String2。如果这两个字符串不相等,则返回0。如果两个字符串相等,则它返回1:

[ "abc" != "ABC" ] && echo $? || echo $?
63bbcce147271d47d8465223eb96fef20a880a.jpg

test 命令比较整数

检查数字是否相等

-eq 选项检查两个整数是否相等,如果相等返回0,否则返回1:

[ 10 -eq 20 ] && echo $? || echo $?

检查数字是否不相等

-ne 选项检查两个整数是否不相等,如果不相等返回0,否则返回1:

[ 10 -ne 20 ] && echo $? || echo $?

检查一个数字是否大于等于另一个

选项 -ge 用于检查整数1 是否大于等于整数2,如果是则返回0,否则返回1:

[ 100 -ge 10 ] && echo $? || echo $?

-gt 运算符检查整数1是否大于整数2。如果是,则返回0。否则,返回1:

[ 20 -gt 10 ] && echo $? || echo $?

检查一个数字是否小于等于另一个

-le 运算符检查整数1是否小于或等于整数2。如果为真,则返回0,否则返回1:

[ 5 -le 10 ] && echo $? || echo $?

-lt 运算符检查整数1是否小于整数2。如果整数1小于整数2,则返回0,否则返回1:

[ 5 -lt 10 ] && echo $? || echo $?
93764bb7056a2db8e7b301d471a3adbf886709.jpg

test 命令与文件和目录操作

test 命令还可用于文件和目录,下面我们来看几个例子。 下面的命令用于检查文件对于当前用户是否可执行,如果可执行,返回0,否则返回1:

[ test -x filename ] && echo executable || echo non-executable

也可以相同的方式检查文件的其他权限,比如 r 和 w。在此可使用的其他常用参数包括:

命令

描述

目录/文件是否存在

是否为文件

是否为目录

文件大小是否大于0

是否为符号链接

是否为套接字(socket)

在 bash 脚本中使用 test 命令

上面的例子我们是使用的一行代码做的演示,除此以外,我们还可以在 bash 脚本中使用 test 命令以及 if else 分支条件。 下面我们来看一个简单的例子,传递参数用于比较两个数字:

#!/bin/bash
## Check if the numbers are equal or not
read -p "Enter the first number: " num1
read -p "Enter the second number: " num2
if test "$num1" -eq "$num2"  
then
   echo "$num1 is equal to $num2"
else
   echo "$num1 is not equal to $num2"
fi

大家可以执行一下,看看结果,如下图所示:

c88bd38038862ca30230920b2190cff7424ec9.jpg

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK