PHP 语法检查命令 php -l “$file“ > /dev/null 2>&1;

用户想了解 if php -l "$file" > /dev/null 2>&1; then 这行 bash 脚本的意思。我需要解释清楚每个部分的含义。

这行脚本是 PHP 语法检查命令,让我拆解说明:

bash 复制代码
if php -l "$file" > /dev/null 2>&1; then
部分 含义
php -l PHP 的 lint 模式,只检查语法不执行代码
"$file" 要检查的 PHP 文件路径
> /dev/null 把标准输出(正常信息)重定向到黑洞,即不显示
2>&1 把错误输出(2)重定向到标准输出(1),即错误也不显示
if ...; then 如果命令执行成功(返回 0),则执行 then 后面的代码

简单理解

bash 复制代码
# 检查 application/route.php 有没有语法错误
if php -l "application/route.php" > /dev/null 2>&1; then
    echo "语法正确"
else
    echo "语法错误"
fi

实际效果对比

不加隐藏输出:

bash 复制代码
$ php -l application/route.php
No syntax errors detected in application/route.php

加了 > /dev/null 2>&1:

bash 复制代码
$ php -l application/route.php > /dev/null 2>&1
$  # 没有任何输出,只返回成功/失败状态

在脚本中的作用

bash 复制代码
for file in "${PHP_FILES[@]}"; do
    if php -l "$file" > /dev/null 2>&1; then
        echo "[OK] $file"      # 语法正确,显示绿色 OK
    else
        echo "[FAIL] $file 语法错误"  # 语法错误,显示红色 FAIL
        exit 1                  # 退出部署
    fi
done

总结:这行代码静默检查 PHP 文件语法,正确就继续,错误就停止部署。

相关推荐
code2cat2 小时前
Java进阶篇之AtomicMarkableReference:引用还在,标记已经改变
java·开发语言·cas·并发编程·逻辑删除
CappuccinoRose2 小时前
FormData数据处理
开发语言·前端·javascript·表单数据
Zguigo3 小时前
【CUDA8】第一个CUDA C++ Kernel --vector add
java·开发语言·c++
-Marks-3 小时前
【C++编程】STL容器(二)--- vector底层模拟实现(常用接口实现 | 扩容机制 | 深浅拷贝 | 迭代器失效)
开发语言·c++·vector·内存管理·迭代器失效·vector底层模拟实现
Shadow(⊙o⊙)3 小时前
C++11并发支持库
开发语言·c++
一技安身3 小时前
【java】JDK8 + JDK17 绿色解压共存方案-全程不修改任何系统环境变量
java·开发语言
hudd6684 小时前
JavaEE 初阶 - 多线程(初阶)
java·开发语言·java-ee
I Am a robert girl4 小时前
稀有事件估计的迭代去对齐:从源码视角拆解重要性采样新范式
开发语言·python·机器学习·重要性采样·蒙特卡洛方法·稀有事件估计
golang学习记4 小时前
rust开发,选VS Code还是RustRover?
开发语言·后端·rust
打工仔折腾 AI5 小时前
从零写一个CAD 05:以鼠标为中心的滚轮缩放,招法能复用但顺序不能反
开发语言·后端·python·性能优化·计算机外设·swift·ai agent 实战