Bash 3 호환 코드 [닫기]

Bash 3 호환 코드 [닫기]

이 bash 기능이 있습니다.

zmx () { 

 "$@" 2> >( while read line; do echo -e "r2g: $line"; done ) > \
     >( while read line; do echo -e "r2g: $line"; done )

}

이것이 하는 일은 stdout/stderr의 각 줄에 "r2g:"를 추가하는 것입니다.

다음과 같이 사용합니다.

$ zmx echo "foo"

당신은 얻을 것이다:

r2g: foo

Bash4에서는 잘 작동하지만 Bash3에서는 Mac에서 다르게 실행되는 것 같습니다.

이것을 관용적인 Bash3으로 변환하는 방법을 아는 사람이 있습니까?

답변1

Bash 3.2.57 작업 중

MacBook-Pro:~ em$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
Copyright (C) 2007 Free Software Foundation, Inc.

MacBook-Pro:~ em$ zmx() { "$@" 2> >(while read line;do echo -e "err: $line"; done ) > >(while read line; do echo -e "std: $line"; done); }
MacBook-Pro:~ em$ zmx bash -c "ls -1 /etc/ | head -5 ; cat /etc/shadow"
std: afpovertcp.cfg
std: afpovertcp.cfg~orig
std: aliases
std: aliases.db
std: apache2
err: cat: /etc/shadow: No such file or directory

관련 정보