如果您對Ruby的一個之前運行bash腳本,你可以得到做這樣的事情:
Hash[([ 'A', 'B', 'C', 'D' ] & ENV.keys).map {|x| [x, ENV[x]] }]
其中陣列[ 'A', 'B', 'C', 'D' ]
包含有效的變量名創建Hash
。
如果您需要解析紅寶石bash腳本,請執行以下操作:
vars = {}
IO.read('shell.sh').each do| line |
if line =~ /^export\s([A-Za-z_][A-Za-z_0-9]*)=\s*(?:['"]([^'"]*)['"]|(.*))\s*$/
(name, value) = [ $1, $2 || $3 ]
value.gsub!(/\$(?:([A-Za-z_][A-Za-z_0-9]*)|{([^{}]+)})/) do| match |
ENV[ match[1..-1] ]
end
vars[ name ] = value.gsub(/#.*/, '').strip
end
end
vars
# => {"A"=>"a", "B"=>"b", "C"=>"1", "D"=>"malo"}
你有'ENV'恆定的環境變量。 –