如何在 Magisk 模块的 shell 中从另一个文件调用函数?

问题描述 投票:0回答:1

我无法使用其他文件中的函数。主文件是install.sh,函数放在文件functions.sh中

我获取函数时安装结果失败。

我使用了以下代码,但安装崩溃了。

主要文件调用函数:install.sh

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

chmod +x install.sh
source ./functions.sh

TEXT="I am here"


check $text

另一个包含函数的文件:functions.sh

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

我也尝试过使用 source /functions.sh 而不是 . /functions.sh

bash shell sh busybox
1个回答
0
投票

您正在通过 shell 运行脚本

/system/bin/sh
。如果这确实是 Bash,那么它将在 POSIX 一致性模式下运行。另一方面,你标记 [busybox],它提供的 shell 是
ash
,而不是 Bash。
ash
是来自 Bourne 家族的轻量级 shell,其中“轻量级”在某种程度上意味着它不提供额外的功能,例如 Bash、Zsh 和该家族的其他成员所提供的功能。

我获取函数时安装结果失败。

不足为奇。

source
命令不是传统 Bourne shell 语言的一部分。该命令的标准拼写是
.
。因此,无论您是在 POSIX 一致性模式下运行
ash
还是 Bash,您可能都在寻找:

. ./functions.sh
© www.soinside.com 2019 - 2024. All rights reserved.