插件窝 干货文章 linux shell命令if怎么写

linux shell命令if怎么写

then 判断 字符串 文件 272    来源:    2025-04-05

Linux Shell 中的 if 语句写法

在 Linux Shell 脚本中,if 语句用于条件判断,基本语法如下:

基本语法

if [ condition ]; then
    # 条件为真时执行的命令
elif [ another_condition ]; then
    # 另一个条件为真时执行的命令
else
    # 所有条件都不满足时执行的命令
fi

常用条件判断

1. 文件/目录判断

if [ -f "/path/to/file" ]; then  # 判断文件是否存在
if [ -d "/path/to/dir" ]; then   # 判断目录是否存在
if [ -s "/path/to/file" ]; then  # 判断文件存在且不为空
if [ -r "/path/to/file" ]; then  # 判断文件可读
if [ -w "/path/to/file" ]; then  # 判断文件可写
if [ -x "/path/to/file" ]; then  # 判断文件可执行

2. 字符串比较

if [ "$str1" = "$str2" ]; then   # 字符串相等
if [ "$str1" != "$str2" ]; then  # 字符串不等
if [ -z "$str" ]; then           # 字符串为空
if [ -n "$str" ]; then           # 字符串非空

3. 数值比较

if [ $num1 -eq $num2 ]; then     # 等于
if [ $num1 -ne $num2 ]; then     # 不等于
if [ $num1 -gt $num2 ]; then     # 大于
if [ $num1 -lt $num2 ]; then     # 小于
if [ $num1 -ge $num2 ]; then     # 大于等于
if [ $num1 -le $num2 ]; then     # 小于等于

4. 逻辑运算

if [ condition1 ] && [ condition2 ]; then  # 与
if [ condition1 ] || [ condition2 ]; then  # 或
if ! [ condition ]; then                   # 非

现代 Bash 语法(推荐)

在较新的 Bash 版本中,可以使用双括号 [[ ]] 代替单括号 [ ],它支持更多功能且更安全:

if [[ $str1 == $str2 ]]; then      # 字符串比较
if [[ $num1 > $num2 ]]; then       # 数值比较(可以直接使用 > <)
if [[ $str =~ "regex" ]]; then     # 正则表达式匹配

示例

检查文件是否存在

if [ -f "/etc/passwd" ]; then
    echo "文件存在"
else
    echo "文件不存在"
fi

检查变量值

if [ "$USER" = "root" ]; then
    echo "您是root用户"
else
    echo "您是普通用户"
fi

数值比较

if [ $count -gt 10 ]; then
    echo "计数大于10"
fi

多条件判断

if [[ $age -gt 18 && "$country" == "China" ]]; then
    echo "中国成年人"
fi

注意事项

  1. [] 前后必须有空格
  2. 字符串变量比较时最好用双引号括起来,防止空变量导致语法错误
  3. 现代脚本推荐使用 [[ ]] 而非 [ ],功能更强大且更安全
  4. 赋值语句(=)和相等比较(== 或 =)是不同的

希望这些信息对您有帮助!如需更具体的示例或有其他问题,请随时提问。