在编写 Linux Shell 脚本时,我们经常需要根据不同的条件执行不同的操作。比如:判断文件是否存在、比较两个数字大小、检查用户输入是否合法等。这些都离不开 Shell 逻辑测试。本文将带你从零开始,轻松掌握 Shell 中的条件判断与逻辑测试,即使你是初学者也能看懂!
Shell 逻辑测试 是指在 Shell 脚本中使用条件表达式来判断某个条件是否成立,并据此决定程序的执行路径。它通常配合 if、while、until 等控制结构使用。
在 Shell 中,有两种常用方式来进行逻辑测试:
test 命令[ ](注意:左右必须有空格!)例如,判断一个变量是否为空:
# 使用 testif test -z "$name"; then echo "名字为空"fi# 使用 [ ]if [ -z "$name" ]; then echo "名字为空"fi Shell 提供了丰富的测试操作符,主要分为三类:
-e file:文件存在-f file:是普通文件-d dir:是目录-r file:可读-w file:可写-x file:可执行if [ -f "/etc/passwd" ]; then echo "passwd 文件存在且是普通文件"fi -z str:字符串长度为 0(空)-n str:字符串长度非 0(非空)str1 = str2:两字符串相等str1 != str2:两字符串不等read -p "请输入用户名: " userif [ -z "$user" ]; then echo "错误:用户名不能为空!"else echo "欢迎,$user!"fi num1 -eq num2:等于(equal)num1 -ne num2:不等于(not equal)num1 -lt num2:小于(less than)num1 -le num2:小于等于num1 -gt num2:大于(greater than)num1 -ge num2:大于等于age=20if [ $age -ge 18 ]; then echo "你已成年"else echo "你还未成年"fi 多个条件可以通过逻辑运算符组合:
&& 或 -a:逻辑 AND(与)|| 或 -o:逻辑 OR(或)!:逻辑 NOT(非)# 判断文件存在且可读if [ -e "data.txt" ] && [ -r "data.txt" ]; then cat data.txtfi# 或者用 -a(但推荐使用 &&,更清晰)if [ -e "data.txt" -a -r "data.txt" ]; then cat data.txtfi 下面是一个结合多种测试的小脚本,用于安全删除文件:
#!/bin/bashread -p "请输入要删除的文件路径: " fileif [ ! -e "$file" ]; then echo "错误:文件不存在!"elif [ ! -f "$file" ]; then echo "错误:这不是一个普通文件!"elif [ ! -w "$file" ]; then echo "错误:你没有权限删除此文件!"else read -p "确定要删除 $file 吗?(y/n): " confirm if [ "$confirm" = "y" ]; then rm "$file" echo "文件已删除。" else echo "操作已取消。" fifi [ -f file ] 正确,[-ffile] 错误。"$var",防止变量为空时报错。== 或 >,必须用 -eq、-gt 等。= 或 ==(在 [ ] 中两者等效)。通过本教程,你应该已经掌握了 Linux Shell 逻辑测试 的核心知识。无论是 Shell 条件判断、bash if 语句 的使用,还是实际脚本编写,这些技能都是 shell 脚本教程 中的基础。多加练习,你很快就能写出健壮、智能的 Shell 脚本!
提示:在终端中多尝试 man test 查看完整测试选项。
本文由主机测评网于2025-11-30发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025111574.html