タグ付けされた質問 「indirection」

5
間接拡張とは何ですか?$ {!var *}はどういう意味ですか?
「初心者のためのBashガイド」を読んでいます。それは言う: の最初の文字がPARAMETER感嘆符である場合、Bashは残りの部分から形成された変数の値を変数PARAMETERの名前として使用します。次に、この変数が展開され、その値は、PARAMETERそれ自体の値ではなく、残りの置換で使用されます。これは、間接拡張として知られています。 与えられた例は次のとおりです。 franky ~> echo ${!N*} NNTPPORT NNTPSERVER NPX_PLUGIN_PATH 私はここで完全に理解していません: 残りの部分から形成された変数の値 PARAMETER PARAMETERだけで!N*、その後、 残りの PARAMETER だけN*です。これはどのように変数を形成することができますか?Bashはそこで可能なすべてのコマンドを検索しましたか?
85 bash  indirection 

2
プッシュ後にスカラー値が影響を受けるかどうか…(楽)
プッシュされたScalarコンテナーによって保持されている値がプッシュ後に影響を受ける時期と理由を理解するのが困難です。2つの様式化された例で、より複雑な状況で遭遇した問題を説明しようと思います。 *例1 *最初の例では、スカラー$iがの@b一部として配列にプッシュされListます。プッシュ後、スカラーが保持する値は、$i++命令を使用したforループの後の反復で明示的に更新されます。これらの更新は、配列の値に影響を及ぼします。for @bループの最後で、@b[0;0]はに等しく3、もはやにはなりません2。 my @b; my $i=0; for 1..3 -> $x { $i++; say 'Loose var $i: ', $i.VAR.WHICH, " ", $i.VAR.WHERE; if $x == 2 { @b.push(($i,1)); say 'Pushed $i : ', @b[0;0].VAR.WHICH, " ", @b[0;0].VAR.WHERE; } } say "Post for-loop"; say "Array : ", @b; say 'Pushed …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.