2017-08-31 22 views
0

変数の名前を知っているときに変数値を出力する方法を知りたいと思います。 すべての作品をまとめるには少し助けが必要です。変数の値をbashで名前で印刷する方法

私はa = Aとb = Bを持っているとしましょう。さらに、私はファイルの中にaとbのリストを持っています。そして私は、私はevalでテストしていた

a=A 
b=B 

印刷したいが、私はないforループでそれを行うことができませんでした。私はevalの結果をキャプチャすることはできませんだから、私は、私はこのように一緒に置くことができ

...と思いますが、それは...

セットアップ

$ cat f.txt 
a 
b 
$ a=A 
$ b=B 

実行

を匂い

for n in `cat f.txt` 
do 
    echo -n $n 
    eval echo \$$n 
done 
と望んでいた結果が

a=A 
b=B 
です私が行うことができないんだけど何

が、私は、後の値を使用する必要がある場合、それは動作しません...

val=`eval echo \$$n` 

は後でecho $valを行うことができるようにすることです。

+0

:あなたは任意の追加の変数(val)を使用する必要はありません、それは次のようになります。もちろん、

$ for n in 'cat f.txt '; do > val=$(eval "echo \$$n") > echo $n=$val > done a=A b=B 

DontReadLinesWithForと[シェル変数を引用符で囲むのはいつですか](https://stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-shell-variable) – tripleee

+0

リンクありがとうございます。ちょうどそれを単純なままにしたかった... – Betlista

+0

それを正しく行うことはそれほど複雑ではありません。 – tripleee

答えて

0

どのように?あなたは本当にhttp://mywiki.wooledge.org/を読みたい

$ for n in $(cat f.txt); do echo $n=$(eval "echo \$$n"); done 
a=A 
b=B 
+0

ありがとう、それは、試してみたときに引用符で囲まれていませんでした。' $(eval echo \ $$ n) '、トリプルアイは私に言いたかった... – Betlista

0

あなたは行うことができます。これについて

$ a=A 
$ echo $a 
A 
$ echo a=$a 
a=A 
+0

いいえ、あなたは 'a'で直接作業していますが、他の変数の名前 - 上記の例では 'n' ... – Betlista

関連する問題