如果您对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'恒定的环境变量。 –