You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kernel Adiutor自定义开关Shell脚本文件读取判断问题

解决Kernel Adiutor自定义开关控件的状态判断问题

我帮你分析下脚本里的几个关键错误,这些问题直接导致了开关状态判断异常:

原脚本的核心问题

  1. 变量赋值语法错误
    你写的var= $(<sys/class/lcd/panel/mdnie/hdr)有两个致命问题:

    • Shell变量赋值时=前后不能有空格,空格会让Shell把后面的$(<...)当成独立命令执行,最终var被赋值为空;
    • 文件路径开头缺少/,变成了相对路径,Shell根本找不到目标文件,读取结果自然为空。
  2. if条件判断语法错误
    Shell里的条件判断不能用( "$var" = 0)这种写法,正确的格式是用方括号[ ]或者双方括号[[ ]],同时字符串比较时最好给值加引号,避免空值引发的语法报错。

  3. 未处理文件中的换行符
    从/sys目录下的文件读取内容时,往往会自带换行符,比如实际读取到的是0\n而不是纯0,直接判断会因为隐藏的换行符导致匹配失败。

修正后的脚本

#!/system/bin/sh
# 读取文件内容并去掉换行符,确保值纯净
var=$(tr -d '\n' < /sys/class/lcd/panel/mdnie/hdr)
# 标准的Shell条件判断格式
if [ "$var" = "0" ]; then
    echo 0
else
    echo 1
fi

额外说明

  • 用tr -d '\n'可以彻底去掉内容里的换行符,避免因为隐藏字符导致判断失误;
  • 如果你习惯用cat命令,也可以写成var=$(cat /sys/class/lcd/panel/mdnie/hdr | tr -d '\n'),效果完全一致;
  • 在你确认已获取su权限、文件权限正常的前提下,这个脚本应该能正确返回对应状态:文件内容为0时输出0,为1时输出1。

内容的提问来源于stack exchange,提问作者kotn3l

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:12:01