当前位置:首页>Linux>Linux进阶打怪:Shell编程保姆级入门指南

Linux进阶打怪:Shell编程保姆级入门指南

  • 2026-08-18 23:11:49
Linux进阶打怪:Shell编程保姆级入门指南

文章目录

  • 前言
  • 一、先搞懂:Shell到底是什么?
    • 第一个Shell脚本:Hello World
    • 脚本的两种执行方式
  • 二、Shell变量:新手坑最多的地方
    • 1. 系统自带的变量
    • 2. 自定义变量:记住“等号两边没空格”
    • 3. 环境变量:全局生效的变量
    • 4. 位置参数变量:给脚本传参数
    • 5. 预定义变量:Shell提前定义好的
  • 三、Shell运算符:算数运算怎么写
  • 四、条件判断:逻辑控制的基础
    • 基本语法
    • 常用判断条件
      • (1)字符串比较
      • (2)整数比较
      • (3)文件权限判断
      • (4)文件类型判断
    • if分支语句
    • case分支语句
  • 五、循环语句:批量操作的神器
    • 1. for循环
      • 写法1:遍历参数/列表
      • 写法2:类C语言循环
    • 2. while循环
  • 六、read读取输入:让脚本可以交互
  • 七、Shell函数:封装复用代码
    • 1. 两个超实用的系统函数
    • 2. 自定义函数
  • 八、实战案例:MySQL定时自动备份
    • 需求
    • 脚本实现
    • 设置定时执行
  • 总结
    • 1、脚本基础
    • 2、四大变量
    • 3、算数运算
    • 4、条件判断
      • 分支语句
    • 5、循环
    • 6、交互输入read
    • 7、函数
    • 8、企业实战:MySQL定时备份

前言

这篇博客我就把Shell编程从入门到实战的核心内容全部整理出来,包括新手最容易踩的语法坑、高频必学的语法点、还有一个企业里真的会用的MySQL定时备份实战案例。全是自己踩坑总结出来的干货,建议收藏,学的时候对着敲一遍,基本就能上手用哩

一、先搞懂:Shell到底是什么?

很多人学了半天Shell,都没搞明白它到底是啥。其实一句话就能说清:Shell就是一个命令行解释器,是我们和Linux内核沟通的翻译官

我们在终端敲的cd、ls这些命令,本质上都是先发给Shell,再由Shell解析后调用内核执行。而Shell编程,就是把一堆要执行的Linux命令,按照逻辑顺序写进一个文件里,让系统自动批量执行,不用我们手动一条一条敲。

Linux里最常用的Shell就是Bash,也是我们学习的重点。我们写的脚本文件通常以.sh结尾,这只是个约定俗成的标识,其实不影响执行,但规范起见还是建议加上。

第一个Shell脚本:Hello World

新手写第一个脚本,大概率会踩两个坑:忘了加脚本声明、忘了加执行权限。我当初两个坑全踩了,印象极其深刻。

一个标准的脚本长这样:

#!/bin/bash
# 我的第一个Shell脚本
echo"Hello World!"
  • 第一行#!/bin/bash是必须的,告诉系统这个脚本要用Bash解释器来执行;
  • #
    开头的是注释,脚本运行的时候会自动忽略。

脚本的两种执行方式

  1. 赋予权限后直接执行(推荐)
# 给脚本添加可执行权限
chmod u+x hello.sh
# 相对路径执行
./hello.sh
# 也可以用绝对路径执行
/root/shellCode/hello.sh
  1. 用sh命令直接调用(不用加权限)
sh hello.sh

这种方式本质是直接用sh解释器去读文件,所以不需要文件本身有执行权限,临时测试的时候很方便。

二、Shell变量:新手坑最多的地方

Shell的变量分为四大类:系统变量、自定义变量、环境变量、特殊变量,其中细节特别多,尤其是空格规则,新手一不注意就报错。

1. 系统自带的变量

Linux内置了很多现成的变量,比如$HOME(当前用户家目录)、$PWD(当前所在绝对路径)、$SHELL(当前解释器)、$USER(当前用户名)。
想查看所有系统变量,直接输set就行,会列出当前Shell里所有的变量和函数。

运行实例如下:

2. 自定义变量:记住“等号两边没空格”

这是我踩的第一个大坑!写A = 100报错了半天,后来才知道Shell里变量赋值,等号左右绝对不能有空格。

#!/bin/bash
# 正确写法:等号两边无空格
A=100
# 输出变量要加$符号
echoA=$A
echo"A=$A"

# 撤销变量用unset
unset A
echo"撤销后A=$A"

# 声明只读变量,不能修改也不能撤销
readonlyB=2
echo"只读变量B=$B"

还有几个命名规则要记住:

  • 变量名只能由字母、数字、下划线组成,不能以数字开头;
  • 变量名习惯全大写,算是行业默认规范;
  • 想把命令的执行结果赋值给变量,有两种写法:
# 写法1:反引号(不推荐,容易和单引号搞混)
C=`date`
# 写法2:$()(推荐,清晰易读)
D=$(date)

3. 环境变量:全局生效的变量

如果想让一个变量在所有Shell脚本里都能用,就要把它设成环境变量。
我们之前配置JDK的时候改的/etc/profile,里面写的就是全局环境变量。配置步骤很固定:

  1. export 变量名=变量值把变量导出为环境变量;
  2. 执行source 配置文件让修改立刻生效,不用重启系统;
  3. echo $变量名就能查到变量值了。

4. 位置参数变量:给脚本传参数

我们写的脚本不可能永远写死内容,很多时候需要运行的时候传参数进去,这时候就要用到位置参数变量。
常用的就这几个:

变量
作用
$0
脚本本身的文件名
$n
第n个输入参数,n从1开始,10以上要写成${10}
$*
所有输入参数,当成一个整体看待
$@
所有输入参数,每个参数相互独立
$#
输入参数的总个数

举个例子就懂了,写个脚本position.sh

#!/bin/bash
echo"脚本文件名:$0"
echo"第一个参数:$1"
echo"第二个参数:$2"
echo"所有参数(整体):$*"
echo"所有参数(独立):$@"
echo"参数总个数:$#"

运行实例如下:

运行./position.sh 100 200,输出结果一目了然。这里$*$@的区别,在后面for循环里会体现得更明显。

5. 预定义变量:Shell提前定义好的

这几个变量不用自己定义,直接就能用,写脚本判断状态的时候超实用:

  • $$
    :当前脚本运行的进程号(PID)
  • $!
    :后台运行的最后一个进程的进程号
  • $?
    :上一条命令的执行状态,0代表执行成功,非0代表执行失败

尤其是$?,写脚本的时候判断上一步有没有执行成功,全靠它。

三、Shell运算符:算数运算怎么写

Shell里的算数运算不能直接写1+2,有三种固定写法,我个人最推荐第二种,省事又不容易错。

  1. $((运算式))
  2. $[运算式]
     ✅ 推荐
  3. expr 运算式

举个例子,计算3*(5+1)

#!/bin/bash
# 写法1
RESULT1=$((3*(5+1)))
echo"结果1:$RESULT1"

# 写法2:最简洁,推荐用
RESULT2=$[3*(5+1)]
echo"结果2:$RESULT2"

# 写法3:expr,运算符两边必须有空格,乘号要转义
TEMP=`expr5 + 1`
RESULT3=`expr3\* $TEMP`
echo"结果3:$RESULT3"

运行实例如下:

运行结果为:

expr写法特别麻烦,空格、转义符很容易写错,日常写脚本基本都用$[],简单粗暴。

四、条件判断:逻辑控制的基础

基本语法

[ 条件表达式 ]

⚠️ 巨坑提醒:中括号两边必须有空格![a=b]这么写必错,正确写法是[ a = b ]

条件为空的时候返回false,有内容就返回true,所以[ abc ]的结果是真,[ ]是假。

常用判断条件

(1)字符串比较

  • =
    :判断两个字符串是否相等
  • !=
    :判断两个字符串是否不相等

(2)整数比较

  • -lt
    :小于(less than)
  • -gt
    :大于(greater than)
  • -le
    :小于等于
  • -ge
    :大于等于
  • -eq
    :等于
  • -ne
    :不等于

(3)文件权限判断

  • -r
    :有读权限
  • -w
    :有写权限
  • -x
    :有执行权限

(4)文件类型判断

  • -f
    :存在且是普通文件
  • -e
    :文件/目录存在
  • -d
    :存在且是目录

if分支语句

if语句的结尾是fi,就是if反过来写,刚开始记的时候觉得特别有意思。

if分支语句中结尾fi必须加

# 单分支
if[ 条件 ]
then
    执行代码
fi

# 多分支
if[ 条件1 ]
then
    代码1
elif[ 条件2 ]
then
    代码2
else
    代码3
fi

# 判断文件是否存在
if[-f 文件的绝对路径 ]
then
    代码
fi

举个经典例子:输入分数,判断等级

#!/bin/bash
if[$1-ge80]
then
echo"优秀"
elif[$1-ge70]
then
echo"良好"
elif[$1-ge60]
then
echo"及格"
else
echo"不及格"
fi

运行结果如下:

case分支语句

case的结尾是esac,同样是反过来记。每个分支结尾要写两个分号;;

case $变量名 in
"值1")
    代码1
;;
"值2")
    代码2
;;
*)
    默认执行的代码
;;
esac

执行结果如下:

五、循环语句:批量操作的神器

1. for循环

for循环有两种常用写法,适用场景不一样。

写法1:遍历参数/列表

for 变量 in 值1 值2 值3
do
    循环体
done

这个写法特别适合遍历输入参数,这里就能看出$*$@的区别了:

#!/bin/bash
echo"----测试\$*----"
foriin"$*"
do
echo"参数:$i"
done

echo"----测试\$@----"
foriin"$@"
do
echo"参数:$i"
done

运行./test.sh 1 2 3$*只会输出一行“参数:1 2 3”,而$@会输出三行,分别是1、2、3。
运行结果如下:

写法2:类C语言循环

for((初始值;循环条件;变量变化))
do
    循环体
done

运行结果如下:

经典例题:求1到100的和

#!/bin/bash
SUM=0
for((i=1;i<=100;i++))
do
SUM=$[$SUM+$i]
done
echo"1-100的和是:$SUM"

运行结果如下:

2. while循环

while循环和其他语言逻辑一样,条件满足就一直循环。

while[ 条件 ]
do
    循环体
done

同样用求1到100的和举例:

#!/bin/bash
SUM=0
i=1
while[$i-le100]
do
SUM=$[$SUM+$i]
i=$[$i+1]
done
echo"总和是:$SUM"

六、read读取输入:让脚本可以交互

如果想让脚本运行的时候,提示用户输入内容,就要用到read命令。两个最常用的参数:

  • -p
    :指定提示文字
  • -t
    :指定等待超时时间,单位秒,超时就不等了

举个例子:

#!/bin/bash
# 提示用户输入,不限时间
read-p"请输入第一个数字:" NUM1
# 提示用户输入,10秒内没输入就跳过
read-t10-p"请输入第二个数字(10秒内):" NUM2
echo"两个数的和是:$[$NUM1+$NUM2]"

七、Shell函数:封装复用代码

Shell里有系统自带的工具函数,也可以自己定义函数。

1. 两个超实用的系统函数

  • basename
    :从完整路径里抠出文件名
    basename /home/test/a.txt  # 输出 a.txt
    basename /home/test/a.txt .txt  # 去掉后缀,输出 a
  • dirname
    :从完整路径里抠出文件所在的目录路径
    dirname /home/test/a.txt  # 输出 /home/test

处理文件路径的时候,这两个函数巨好用,不用自己写字符串切割。

2. 自定义函数

Shell函数的语法和其他语言有点不一样:参数不用写在括号里,调用的时候直接跟在函数名后面。

#!/bin/bash
# 定义函数
functiongetSum(){
SUM=$[$n1+$n2]
echo"两数之和是:$SUM"
}

# 读取用户输入
read-p"输入第一个数:" n1
read-p"输入第二个数:" n2

# 调用函数,参数直接写在后面
getSum $n1$n2

⚠️ 注意:函数必须定义在调用前面,Shell是从上往下执行的,先定义后调用。

八、实战案例:MySQL定时自动备份

学了这么多语法,总得做点实际的东西。这个MySQL备份脚本是企业里真的会用的,写完特别有成就感。

需求

  1. 每天凌晨2:30自动备份MySQL数据库;
  2. 备份文件以备份时间命名,打包成tar.gz格式;
  3. 自动删除10天前的旧备份文件;
  4. 备份开始和结束给出提示。

脚本实现

#!/bin/bash
# 备份文件存放目录
BACKUP=/data/backup/db
# 获取当前时间,格式:年月日_时分秒
DATETIME=$(date +%Y-%m-%d_%H%M%S)

echo"=====开始备份,时间:$DATETIME====="

# 数据库配置
HOST=localhost
DB_USER=root
DB_PW=你的数据库密码
DATABASE=要备份的库名

# 如果备份目录不存在,就自动创建
[!-d"${BACKUP}/${DATETIME}"]&&mkdir-p"${BACKUP}/${DATETIME}"

# 执行数据库备份并压缩
mysqldump -u${DB_USER} -p${DB_PW}--host=${HOST}-q-R--databases${DATABASE}|gzip>${BACKUP}/${DATETIME}/${DATETIME}.sql.gz

# 切换到备份目录,把整个文件夹打包成tar.gz
cd${BACKUP}
tar-zcvf$DATETIME.tar.gz ${DATETIME}
# 删掉原文件夹,只保留压缩包
rm-rf${BACKUP}/${DATETIME}

# 删除10天前的备份文件
find${BACKUP}-atime +10 -name"*.tar.gz"-execrm-rf{}\;

echo"=====备份完成,文件:$DATETIME.tar.gz====="

设置定时执行

脚本写好之后,用crontab设置定时任务就能全自动运行了:

# 编辑定时任务
crontab-e
# 添加一行:每天凌晨2点30分执行脚本
302 * * * /usr/sbin/mysql_db_backup.sh

总结

Shell(Bash)是Linux命令行解释器,Shell脚本就是把多条Linux命令编写到.sh文件实现批量自动化执行,是运维自动化的核心工具。

1、脚本基础

  1. 脚本首行声明:#!/bin/bash,指定Bash解释器。#代表注释。
  2. 两种执行方式
  • chmod u+x xxx.sh && ./xxx.sh
    :添加执行权限后运行(推荐)
  • sh xxx.sh
    :直接调用解释器,不需要执行权限

2、四大变量

  1. 系统变量
    $HOME$PWD$USERset查看全部系统变量。
  2. 自定义变量
    A=100等号两边不能有空格;取值$A;撤销unset A;只读readonly B=2
    命令结果赋值:D=$(date)(推荐),不推荐反引号`date`
  3. 环境变量
    export 变量名=值导出全局变量;source 配置文件生效。
  4. 位置参数变量
变量
作用
$0
脚本文件名
$1 $2...${10}
第1、2、10个参数
$*
全部参数,作为一整个字符串
$@
全部参数,每个参数独立(循环常用)
$#
传入参数总个数
  1. 预定义变量
  • $$
    :当前脚本PID
  • $!
    :最后一个后台进程PID
  • $?
    :上一条命令返回状态,0成功,非0失败,脚本判断必备。

3、算数运算

优先用 $[表达式],简洁方便;也可用$((表达式))expr运算符前后必须空格,乘号\*转义。

res=$[3*(5+1)]

4、条件判断

语法:[ 条件 ]中括号内侧必须留有空格

  1. 字符串:=相等、!=不等
  2. 整数:-lt小于、-gt大于、-le小于等于、-ge大于等于、-eq等于、-ne不等于
  3. 文件:-f普通文件、-d目录、-e存在;权限-r -w -x

分支语句

  1. if语句,结束标记fi
if[ 条件 ];then
...
elif[条件];then
...
else
...
fi
  1. case语句,结束标记esac,每个分支末尾;;

5、循环

  1. for循环
  • 遍历:for i in 值1 值2 值3; do ... done,区分"$*""$@"
  • C风格计数:for((i=1;i<=100;i++));do ... done
  1. while循环:条件成立循环
while[ 条件 ]
do
done

6、交互输入read

  • -p
    提示文字,-t超时秒数
read-p"提示文字" num
read-t10-p"10秒超时输入" num2

7、函数

  1. 内置工具
  • basename
     获取文件名
  • dirname
     获取目录路径
  1. 自定义函数:必须先定义,后调用,参数直接跟函数名后面,不写括号。
functionfun(){
}
fun 参数1 参数2

8、企业实战:MySQL定时备份

  1. 使用mysqldump做数据库备份,配合gzip压缩;
  2. find
    命令清理N天前过期备份;
  3. 配合crontab -e配置定时任务,实现定时自动备份。

高频踩坑汇总

  1. 变量赋值等号不能加空格
  2. [ ]
    条件判断,括号内部两侧必须空格
  3. if结尾fi、case结尾esac不能遗漏
  4. "$*"
    "$@"双引号包裹下循环行为不一样
  5. 函数必须写在调用代码之前
  6. $?
    判断上一步执行结果,自动化脚本必备

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 16:29:36 HTTP/2.0 GET : https://f.mffb.com.cn/a/509350.html
  2. 运行时间 : 0.426978s [ 吞吐率:2.34req/s ] 内存消耗:4,677.49kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=cee61562fa29afa28761ce74680388fc
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001015s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001478s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.005936s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000638s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001506s ]
  6. SELECT * FROM `set` [ RunTime:0.000567s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001361s ]
  8. SELECT * FROM `article` WHERE `id` = 509350 LIMIT 1 [ RunTime:0.044071s ]
  9. UPDATE `article` SET `lasttime` = 1787300976 WHERE `id` = 509350 [ RunTime:0.034542s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.055952s ]
  11. SELECT * FROM `article` WHERE `id` < 509350 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.024238s ]
  12. SELECT * FROM `article` WHERE `id` > 509350 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.018056s ]
  13. SELECT * FROM `article` WHERE `id` < 509350 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.010932s ]
  14. SELECT * FROM `article` WHERE `id` < 509350 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.022528s ]
  15. SELECT * FROM `article` WHERE `id` < 509350 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.031297s ]
0.430862s