同じサブシェルを使用してメイン スクリプトからスクリプトを実行すると、このようなことが発生しますか?

同じサブシェルを使用してメイン スクリプトからスクリプトを実行すると、このようなことが発生しますか?

すべてのスクリプトが自動的に実行されるようにスクリプト内で何が行われているか

#! / 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シェル スクリプト (通常はテキスト ファイル) をバイナリ実行可能ファイル (もはやシェル スクリプトではない) に置き換えます。

sourceまたは、引数がバイナリではなくテキスト ファイルであると想定します。したがって、の.出力を で使用することはできません。shcsource

答え2

Unix/Linux シェルにあまり精通していない人にとっては、エラー メッセージは少々わかりにくいかもしれません。エラー メッセージの長いバージョンは次のとおりです。

あなたのスクリプトのどこか、aux1.shまたはaux2.sh、あるいは私がそれらのスクリプトから呼び出したスクリプトのどこかで、 というスクリプトAuto-Help1.0.shが実行されます。そのスクリプトAuto-Help1.0.shには、具体的には 65 行目にエラーがあります。

そのスクリプトの 65 行目には、おそらく が見つかるでしょうsource ./DataWeb.sh。これは、./DataWeb.sh現在のシェルでシェル コマンドのセットとして実行することを意味します。

しかし、./DataWeb.shはシェルスクリプトとして認識されません。バイナリファイルなので、スクリプトとして実行することはできず、このようにソース化することもできません。

それで次は何ですか?

- を見てください./DataWeb.sh。これはバイナリでしょうか、それともシェルスクリプト (名前が示すとおり) でしょうか? では、なぜバイナリと見なされるのでしょうか? - 通常、 はどのように実行しますか?ファイルをソースする代わりに、./DataWeb.shの 65 行目でそのように実行してみてください。Auto-Help1.0.sh

関連情報