當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Ruby ENV類用法及代碼示例

本文簡要介紹ruby語言中 ENV類 的用法。

ENV 是環境變量的 hash-like 訪問器。

與操作係統的交互

ENV 對象與操作係統的環境變量交互:

  • 當您在 ENV 中獲取名稱的值時,將從當前環境變量中檢索該值。

  • 當您在 ENV 中創建或設置 name-value 對時,名稱和值會立即在環境變量中設置。

  • 當您刪除 ENV 中的 name-value 對時,它會立即從環境變量中刪除。

名稱和值

通常,名稱或值是 String

有效的名稱和值

每個名稱或值必須是以下之一:

  • 一個 String

  • 通過返回 String 來響應 #to_str 的對象,在這種情況下, String 將用作名稱或值。

無效的名稱和值

一個新名字:

  • 可能不是空字符串:

    ENV[''] = '0'
    # Raises Errno::EINVAL (Invalid argument - ruby_setenv())
  • 可能不包含字符 "="

    ENV['='] = '0'
    # Raises Errno::EINVAL (Invalid argument - ruby_setenv(=))

新名稱或值:

  • 可能不是不響應 #to_str 的非字符串:

    ENV['foo'] = Object.new
    # Raises TypeError (no implicit conversion of Object into String)
    ENV[Object.new] = '0'
    # Raises TypeError (no implicit conversion of Object into String)
  • 可能不包含 NUL 字符 "\0"

    ENV['foo'] = "\0"
    # Raises ArgumentError (bad environment variable value: contains null byte)
    ENV["\0"] == '0'
    # Raises ArgumentError (bad environment variable name: contains null byte)
  • 可能沒有 ASCII-incompatible 編碼,例如 UTF-16LE 或 ISO-2022-JP:

    ENV['foo'] = '0'.force_encoding(Encoding::ISO_2022_JP)
    # Raises ArgumentError (bad environment variable name: ASCII incompatible encoding: ISO-2022-JP)
    ENV["foo".force_encoding(Encoding::ISO_2022_JP)] = '0'
    # Raises ArgumentError (bad environment variable name: ASCII incompatible encoding: ISO-2022-JP)

關於排序

ENV 按操作係統環境變量中的順序枚舉其名稱/值對。因此 ENV 內容的順序是OS-dependent,並且可能是不確定的。

這將出現在:

關於示例

ENV 中的某些方法會返回 ENV 本身。通常,有許多環境變量。在此處的示例中顯示大的 ENV 沒有用,因此大多數示例片段都是從重置 ENV 的內容開始的:

相關用法


注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 ENV類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。