使用相同的子 shell 从主脚本运行脚本,这种情况会发生在我身上吗?

使用相同的子 shell 从主脚本运行脚本,这种情况会发生在我身上吗?

在脚本中执行哪些操作以便所有脚本自动执行

#! / data / data / com.termux / files / usr / bin / bash

echo "This is the main script and is intended to execute all three auxiliaries."

# Run aux1.sh
source aux1.sh

# Run aux2.sh
 source aux2.sh

  每次我用 shc 嵌入脚本时都会发生这种情况:

./Auto-Help1.0.sh: line 65: source: ./DataWeb.sh: cannot execute binary file

答案1

shc用二进制可执行文件(不再是 shell 脚本)替换 shell 脚本(通常是文本文件)。

source或者.假设它们的参数是文本文件,而不是二进制文件。因此您不能使用shcwith的输出source

答案2

对于不太熟悉 unix/linux shell 的人来说,错误消息可能有点难以理解。错误消息的详细版本为:

在您的脚本中,aux1.sh或者aux2.sh,或者甚至在我从这些脚本中调用的脚本中,Auto-Help1.0.sh执行了一个名为的脚本。该脚本Auto-Help1.0.sh中有错误,更具体地说是在第 65 行。

在该脚本的第 65 行,您很可能会发现source ./DataWeb.sh。这意味着:./DataWeb.sh在当前 shell 中作为一组 shell 命令执行。

但是,./DataWeb.sh它不被识别为 shell 脚本。它是一个二进制文件。因此,它不能作为脚本执行,也不能像这样被 source 。

那么接下来呢?

-查看./DataWeb.sh。它是二进制文件,还是应该是 shellscript(顾名思义)?那么为什么它被视为二进制文件? - 您通常如何执行./DataWeb.sh?尝试在 的第 65 行以这种方式执行Auto-Help1.0.sh,而不是获取文件。

相关内容