bash
쉘에서 변수를 간접적으로 참조해야 합니다 .
make
나는 기본적으로 글쓰기를 통해 무엇을 할 수 있는지 알고 싶습니다 $($(var))
.
${$var}
가장 간단한 솔루션을 사용해 보았지만 bash
다음 오류가 발생합니다.
bash: ${$var}: bad substitution
이를 수행할 수 있는 방법이 있습니까?
내가 하고 싶은 것은 반복 변수를 사용하여 프로그램의 모든 매개변수(,,,,...)를 반복하는 것이지만 간접 참조를 사용하지 않으면 $1
그렇게 할 수 없습니다 $2
.$3
답변1
var1=foo
and 가 있는 경우 이라고 말할 foo=bar
수 있습니다 . 그러나 위치 매개변수를 반복하려면 다음을 수행하는 것이 거의 확실합니다.bar
${!var1}
for i in "$@"; do
# something
done
답변2
사용 /bin/bash
:
foo=bar
test=foo
echo ${!test}
# prints -> bar
답변3
grep + awk 사용
foo=bar
var_name=foo
set | grep -v var_name | grep ^"${var_name}=" | awk -F= '{ print $2 }'
출력은 다음과 같습니다
bar
이 접근 방식이 작동하는지 확인하려면 bash 스크립트를 확인하세요.
#!/bin/bash
function show_variable_value() {
name=$1
value=$(set | grep -v name | grep ^"${name}=" | awk -F= '{ print $2 }' )
echo "${value}"
}
foo='bar'
# getting the variable value indirectly from the variable name
value=$(show_variable_value foo)
if [ "${value}" == "${foo}" ]; then
echo "The function returned indirectly the variable value from the variable name >>> '${value}' == '${foo}'"
else
echo "This approach does not work"
fi