在linux的shell脚本里,我们经常会写条件判断。如果你看到一段脚本以if开头,中间有then,最后冒出一个fi,那么这个fi就是if语句的结束符。它是shell语法中用来闭合条件分支的关键字,并不是某个命令或者变量。

fi从哪里来
shell语言的设计受到早期编程习惯影响,很多控制结构都用反写的单词表示结束。比如if的结尾写成fi,case的结尾写成esac。这种写法在bash、sh等常见linux shell中都通用。所以linux中fi是什么意思?简单说,它就是if的反写,专门用于标志if语句块结束。
基本使用方式
一个最基础的if语句结构如下,注意then和fi的位置:
#!/bin/bash
# 判断当前用户是否为root
if [ "$(id -u)" -eq 0 ]; then
echo "你是管理员"
else
echo "你是普通用户"
fi
# 上面的fi表示if条件判断结束
如果漏掉fi,shell在解析脚本时会报语法错误,提示缺少结束关键字。
嵌套时的fi
当if里面再套if,每一个if都要有自己的fi:
#!/bin/bash
# 外层判断文件是否存在
if [ -f "/tmp/test.txt" ]; then
# 内层判断文件是否可读
if [ -r "/tmp/test.txt" ]; then
echo "文件存在且可读"
fi
echo "外层判断结束"
fi
常见错误写法
- 把fi写成IF或者Fi,shell区分大小写,必须小写fi。
- 在fi后面不加空格直接跟命令,虽然有时能运行,但建议换行或加空格保持清晰。
- 用
<input>这类标签误当作代码,实际脚本里不会出现这种HTML标签。
和其他语言对比
| 语言 | 条件结束表示 |
|---|---|
| C语言 | 大括号 } |
| Python | 缩进结束 |
| Shell | fi关键字 |
搞清楚linux中fi是什么意思,能让你在读脚本时快速理清逻辑边界。写脚本时养成if和fi配对的习惯,可以减少很多低级语法问题。
linuxfishell_script修改时间:2026-07-26 08:42:16