런타임에 bash 스크립트 변경

런타임에 bash 스크립트 변경

스크립트가 있습니다test

#! /bin/bash

sleep 60
echo hello

실행 파일로 설정하여 실행했고 ./testsleep 명령을 실행할 때 다음으로 변경했습니다.

#! /bin/bash

sleep 60
echo hello!!

출력은 입니다 hello!!. 왜 안되는지 궁금합니다 hello.

hello향후 변경 사항에 관계없이 어떻게 출력할 수 있나요 ?

답변1

귀하의 상황에 대한 해결책은 다음과 같습니다.

스크립트를 함수로 나누고 source함수를 호출할 때마다 별도의 파일에서 호출합니다. 그런 다음 언제든지 이 파일을 편집할 수 있으며 실행 중인 스크립트는 다음에 파일을 가져올 때 변경 사항을 선택합니다.

foo() {
  source foo.sh
}
foo

시험

아래와 callee.sh같이 두 개의 스크립트를 만들었습니다 .called.sh

#The contents of callee.sh script is as below. 
callee.sh

foo() {
  source called.sh
}
foo

#The contents of called.sh script is as below. 
called.sh

#! /bin/bash

sleep 60
echo hello

callee.sh이제 스크립트를 다시 호출하여 실행합니다 called.sh. 기본적으로 called.sh이것은 동적으로 변경되는 스크립트입니다.

이제 callee.sh실행되면 다른 셸을 열고 내용을 다음과 같이 변경합니다.

#! /bin/bash

    sleep 60
    echo hello
    echo "I added more contents here"

callee.sh이제 end 이후에 스크립트를 호출하는 첫 번째 셸에서 sleep내가 얻는 출력은 다음과 같습니다.

hello

보시다시피 I added more contents here출력에서 ​​원하는 최종 결과를 얻지 못했습니다.

인용하다

https://stackoverflow.com/a/3399850/1742825

관련 정보