하나는 다른 하나를 호출하는 두 개의 스크립트가 있다고 가정할 때 각 에코 앞에 텍스트를 추가하여 호출되는 명령에서 에코가 발생했음을 시각적으로 표시하려면 어떻게 해야 합니까?
금연 건강 증진 협회
#!/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