나는 다음과 같은 상황에 처해 있습니다.
zmx_stderr='\033[1;35m'
zmx_stdout='\033[1;36m'
tag='foobar'
tailing(){
echo "tailing logs for ${tag} ...";
while read line; do
echo -e "$zmx_${1} $tag $1${zmx_no_color}: $line"
done;
}
누군가 tailing() 메서드를 호출합니다.
tailing stderr
tailing stdout
zmx_stdout 및 zmx_stderr을 동적으로 찾는 방법은 무엇입니까?
이것은 작동하지 않습니다:
$zmx_${1}
나는 방금 이것을 알아냈습니다:
stdout foobar stdout:
하지만 내가 찾고 있는 것은:
foobar stdout:
제어 문자 생성.
답변1
보조 변수를 사용하여 대상 변수의 이름을 만든 다음 변수 간접 참조를 사용할 수 있습니다.
zmx_var=zmx_$1
echo -e "${!zmx_var} $tag $1${zmx_no_color}: $line"
답변2
Bash 버전 4.4(제 생각에는) 이상에서는 "nameref"를 사용할 수 있습니다.
$ foo_bar=hello
$ set -- bar
$ declare -n "var=foo_$1"
$ echo "$var"
hello