bash スクリプトについて混乱しています。
次のコードがあります:
function grep_search() {
magic_way_to_define_magic_variable_$1=`ls | tail -1`
echo $magic_variable_$1
}
コマンドの最初の引数を含み、たとえば の最後の行の値を保持する変数名を作成できるようにしたいと考えていますls
。
私が望んでいることを説明すると次のようになります。
$ ls | tail -1
stack-overflow.txt
$ grep_search() open_box
stack-overflow.txt
では、$magic_way_to_define_magic_variable_$1
スクリプト内でどのように定義/宣言し、どのように呼び出すべきでしょうか?
eval
、、を試してみましたが${...}
、\$${...}
まだ混乱しています。
ベストアンサー1
最近、もっと良い方法を探していました。連想配列はやりすぎのように思えました。そこで見つけたのがこれです。
suffix=bzz
declare prefix_$suffix=mystr
...その後...
varname=prefix_$suffix
echo ${!varname}
からドキュメント:
「$」文字は、パラメータ展開、コマンド置換、または算術展開を導入します。...
パラメータ展開の基本形式は ${parameter} です。パラメータの値が置換されます。...
パラメータの最初の文字が感嘆符 (!) で、パラメータが名前参照でない場合は、間接レベルが導入されます。Bash は、パラメータの残りの部分を展開して形成された値を新しいパラメータとして使用します。次に、この値が展開され、元のパラメータの展開ではなく、その値が展開の残りの部分で使用されます。これは間接展開と呼ばれます。値は、チルダ展開、パラメータ展開、コマンド置換、および算術展開の対象となります。...