[解決済み] 間接拡張とは何ですか?var*}の意味は何ですか?
質問
を読んでいます。 初心者のための Bash ガイド を読んでいます。 と書いてあります。
の最初の文字が
PARAMETER
の最初の文字が感嘆符の場合、Bash はPARAMETER
の残りの部分から形成された変数の値を変数名として使います。この変数は展開され、その値が残りの置換で使われ、むしろPARAMETER
の値そのものではなく、その値が残りの代入に使われる。これは間接展開と呼ばれています。
与えられた例では
franky ~> echo ${!N*} NNTPPORT NNTPSERVER NPX_PLUGIN_PATH
ここがよくわからない。
の残りの部分から形成される変数の値です。
PARAMETER
のように
PARAMETER
は単に
!N*
であり、次に
その他
PARAMETER
は、ただ
N*
. これがどうして変数になるのでしょうか? Bashはそこに可能なすべてのコマンドを検索しましたか?
どのように解決するには?
もし、あなたが
bash
のマニュアルページを読むと、基本的にあなたが述べていることを確認しています。
パラメータの最初の文字が感嘆符である場合 (
!
) の場合、変数のインダイレクトレベルが導入されます。 Bash はパラメータの残りの部分から形成された変数の値を変数名として使用します。この変数は次に展開され、その値はパラメータの値自体ではなく、置換の残りの部分で使用されます。 これは間接展開と呼ばれています。
しかし、そこから先を読むと
の拡張は例外です。
${!prefix*}
と${!name[@]}
である。
${!prefix*}
prefixに一致する名前。の最初の文字で区切られたprefixで始まる変数の名前に展開する。IFS
という特殊な変数の最初の文字で区切られた、prefixで始まる名前の変数名に展開する。
言い換えれば、あなたの特定の例
${!N*}
は
例外
であり、引用されたルールの それは
は
しかし、次のような期待されるケースでは広告のように機能します。
$ export xyzzy=plugh ; export plugh=cave
$ echo ${xyzzy} # normal, xyzzy to plugh
plugh
$ echo ${!xyzzy} # indirection, xyzzy to plugh to cave
cave
関連
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] シェルで、「2>&1」はどういう意味ですか?
-
[解決済み] 好ましいBashのシェバングとは?
-
[解決済み] bashスクリプトでset -eはどういう意味ですか?
-
[解決済み] シェルスクリプトで文字列が空でもスペースでもないことをチェックする
-
[解決済み] bashでWebサーバーの応答を待つループを作成するには?
-
[解決済み] set -u` による Bash による空の配列展開
-
[解決済み] Bashのコマンドラインと入力制限
-
[解決済み] スペースで区切られた引数の受け渡し (bash) スクリプト
-
[解決済み] here-documentで'unexpected end of file'エラーが発生する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Git のコマンドライン・インターフェイスの言語を変更するにはどうしたらよいですか?
-
[解決済み] set -u` による Bash による空の配列展開
-
[解決済み] Bashの履歴にコマンドを表示させないようにするには?
-
[解決済み] ENV 変数やデフォルト値を使って Makefile の変数を定義する
-
[解決済み] bashでファイル(引数)を編集しているコマンドを "その場 "で実行するには?
-
[解決済み] Bash で +x を表示させずに設定する
-
[解決済み] .bashrcのエイリアスをvimのシェルコマンドで使用できるようにするには?(:!...)
-
[解決済み] 空のディレクトリの検索
-
[解決済み] グレースフル・シャットダウンプロセスのシグナルはどのような順番で送ればよいのですか?
-
[解決済み] SSH接続をチェックするbashスクリプトを作成するには?