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