호출된 스크립트의 각 에코 앞에 텍스트를 어떻게 추가할 수 있나요?

호출된 스크립트의 각 에코 앞에 텍스트를 어떻게 추가할 수 있나요?

하나는 다른 하나를 호출하는 두 개의 스크립트가 있다고 가정할 때 각 에코 앞에 텍스트를 추가하여 호출되는 명령에서 에코가 발생했음을 시각적으로 표시하려면 어떻게 해야 합니까?

금연 건강 증진 협회

#!/usr/bin/env sh
echo - BEGIN
./b.sh # Append "-" to each echo?
echo - END

b.sh

#!/usr/bin/env sh
echo - BEGIN
echo - END

내가 원하는 출력:

- BEGIN
-- BEGIN
-- END
- END

난 닿을 수 없어b.sh출력을 스트리밍해야 합니다.

답변1

echo앞에 a가 붙은 원하는 명령의 텍스트 출력 인 경우 이를 함수로 -재정의하고echo원천다른 스크립트에는 .특별한 내장 함수가 있으므로 해당 함수를 상속합니다.

#!/usr/bin/env sh
printf '%s\n' '- BEGIN'
echo() {
  printf %s -
  command echo "$@"
}
. ./b.sh
printf '%s\n' '- END'

(어쨌든 참고하세요.echo피하는 것이 가장 좋다)

답변2

두 번째 스크립트에서 인쇄한 모든 출력에 이를 추가하려면 해당 출력 을 sed.a.sh

#!/usr/bin/env sh
echo - BEGIN
./b.sh | sed 's/^/-/' 
echo - END

그 결과는 다음과 같습니다.

$ a.sh
- BEGIN
-- BEGIN
-- END
- END

관련 정보