모든 스크립트가 자동으로 실행되도록 스크립트 내에서 수행되는 작업
#! / 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
with 의 출력을 사용할 수 없습니다 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
? Auto-Help1.0.sh
파일을 소싱하는 대신 의 65번째 줄에서 그렇게 해보세요 .