동일한 서브셸을 사용하여 기본 스크립트에서 스크립트를 실행합니다. 이런 일이 발생합니까?

동일한 서브셸을 사용하여 기본 스크립트에서 스크립트를 실행합니다. 이런 일이 발생합니까?

모든 스크립트가 자동으로 실행되도록 스크립트 내에서 수행되는 작업

#! / 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또는 .그들의 인수가 바이너리가 아닌 텍스트 파일이라고 가정하십시오. 따라서 shcwith 의 출력을 사용할 수 없습니다 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번째 줄에서 그렇게 해보세요 .

관련 정보