在Linux或Unix系统中,test
命令用于检查文件类型和比较值。它通常被用来进行条件测试,如判断文件是否存在、字符串是否相等、数值大小比较等。尽管可以直接使用test
命令,但在Shell脚本中更常用的是将其与方括号[]
结合使用,因为这样更直观且易于阅读。
test expression
或者使用方括号的形式:
[ expression ]
注意:方括号形式的前后必须有空格,例如 [ -f file ]
是正确的,而 [-f file]
则会出错。
可以使用test
命令来检查文件的各种属性。以下是一些常用的选项:
-e file
:如果file
存在,则为真。-f file
:如果file
存在并且是一个普通文件,则为真。-d file
:如果file
存在并且是一个目录,则为真。-r file
:如果file
存在并且可读,则为真。-w file
:如果file
存在并且可写,则为真。-x file
:如果file
存在并且可执行,则为真。示例:
检查一个名为example.txt
的文件是否存在且是一个普通文件:
if [ -f example.txt ]; then
echo "example.txt exists and is a regular file."
else
echo "example.txt does not exist or is not a regular file."
fi
可以使用test
命令来检查字符串的长度或比较两个字符串。
-z string
:如果string
的长度为零,则为真。-n string
或者 string
:如果string
的长度非零,则为真。string1 = string2
:如果string1
和string2
相同,则为真。string1 != string2
:如果string1
和string2
不同,则为真。示例:
检查变量name
是否为空:
if [ -z "$name" ]; then
echo "name is empty"
else
echo "name is $name"
fi
可以使用test
命令来比较两个整数。
int1 -eq int2
:如果int1
等于int2
,则为真。int1 -ne int2
:如果int1
不等于int2
,则为真。int1 -lt int2
:如果int1
小于int2
,则为真。int1 -le int2
:如果int1
小于或等于int2
,则为真。int1 -gt int2
:如果int1
大于int2
,则为真。int1 -ge int2
:如果int1
大于或等于int2
,则为真。示例: 比较两个数字:
if [ 5 -gt 3 ]; then
echo "5 is greater than 3"
fi
test_script.sh
的文件。#!/bin/bash
# 检查文件是否存在
if [ -f example.txt ]; then
echo "File exists."
else
echo "File does not exist."
fi
# 检查字符串是否为空
read -p "Enter your name: " name
if [ -z "$name" ]; then
echo "You didn't enter a name."
else
echo "Hello, $name."
fi
# 比较两个数字
num1=10
num2=20
if [ $num1 -lt $num2 ]; then
echo "$num1 is less than $num2."
fi
chmod +x test_script.sh
./test_script.sh