シェルプログラミングで、変数と関数のアドレスを見つける方法はありますか? &xを出力すると、cまたはc ++のように、xメモリアドレスを取得できます。
質問する
1155 次
1 に答える
1
それはあなたが望むものに依存します。ほとんどのシェルは、シンボリック (または「ソフト」) 参照、つまり他の変数の名前を含む変数のみをサポートしています。Korn シェル 93 には、 を使用して作成された名前参照typeset -n
がありますが、アドレスは公開されていません。でそれを見てくださいman ksh
。役立つかもしれません。
しかし、変数のメモリ アドレスを取得できたとしても、それをどうしますか? シェル変数は C のようにプリミティブな方法で構造化されていないため、ポインター演算は役に立ちません。アドレスをインクリメントするだけでは、配列または文字列を反復処理できませんでした。あなたができる最善のことは、その特定のシェルの特定のバージョンのメモリを調査することです。
シェルはほとんどが C で記述されているため、いつでもデバッグ ( -g
) を使用してシェル ソースをコンパイルし、デバッガーを使用して接続することができます。それがあなたに何をもたらすか分からないので、私の質問は次のとおりです:なぜですか?
編集; コメントから、スタックサイズが必要だとわかります-シェル変数がヒープまたは環境ブロックに割り当てられると確信しています。
于 2012-09-24T12:17:34.253 に答える