스크립트가 있습니다test
#! /bin/bash
sleep 60
echo hello
실행 파일로 설정하여 실행했고 ./test
sleep 명령을 실행할 때 다음으로 변경했습니다.
#! /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
출력에서 원하는 최종 결과를 얻지 못했습니다.
인용하다