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

Magisk模块Shell脚本跨文件调用函数失败,求解决方法

Magisk模块Shell函数调用失败问题解决

问题场景

开发Magisk模块时,主脚本install.sh无法调用functions.sh中定义的Shell函数,尝试source函数文件时模块安装直接崩溃。

相关代码

install.sh 代码

#!/system/bin/sh
MODDIR=${0%/*}

echo "running chmod"
chmod +x install.sh

echo "adding functions.sh"
. functions.sh
echo "function retrieved"

TEXT="I am here"

check $text

functions.sh 代码

check(){
    TESTTEXT=$1
    echo "${TESTEXT}"
    return 0
}

安装错误输出

-Copying zip to temp directory
-Installing module.zip
-Device is system-as-root
running chmod
adding functions.sh
! Installation failed

已尝试的source方式

  • source /functions.sh
  • . functions.sh
  • . ./functions.sh

解决步骤

  1. 修正文件路径引用
    Magisk安装模块时,脚本会在临时目录执行,直接用functions.sh无法定位文件。需利用MODDIR变量(模块解压后的根目录)指定路径,正确的source命令应为:
. $MODDIR/functions.sh
  1. 修复函数内变量拼写错误
    functions.sh中echo "${TESTEXT}"是拼写失误,应为echo "${TESTTEXT}",原代码少写了字母T,会导致输出空值。

  2. 修正变量大小写
    Shell变量区分大小写,install.sh中定义的变量是TEXT,调用时却用了小写的$text,应改为:

check $TEXT
  1. 移除不必要的chmod操作
    Magisk会自动处理模块脚本的执行权限,chmod +x install.sh属于冗余操作,且在临时目录执行可能引发权限问题,建议删除该行。

修正后完整代码

install.sh

#!/system/bin/sh
MODDIR=${0%/*}

echo "adding functions.sh"
. $MODDIR/functions.sh
echo "function retrieved"

TEXT="I am here"

check $TEXT

functions.sh

check(){
    TESTTEXT=$1
    echo "${TESTTEXT}"
    return 0
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 17:20:02