すべてのスクリプトが自動的に実行されるようにスクリプト内で何が行われているか
#! / 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
または、引数がバイナリではなくテキスト ファイルであると想定します。したがって、の.
出力を で使用することはできません。shc
source
答え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