你可以完成大部分的在Ruby中:
conf = %x{git config -l}
if m = conf.match(/^user.name=(.*)/)
username = m[1]
end
直接回答你的問題,在%x{}
文字是受到相同的替換爲雙引號中的字符串,所以你需要躲避反斜線:
irb(main):023:0> u = %x{git config -l | sed -n 's/^user.name=\(.*\)$/{\1}/p'}
=> ""
irb(main):024:0> u = %x{git config -l | sed -n 's/^user.name=\\(.*\\)$/{\\1}/p'}
=> "{Glenn Jackman}\n"
或者你可以在一個單引號字符存儲命令:
irb(main):020:0> cmd = %q{git config -l | sed -n 's/^user.name=\(.*\)$/{\1}/p'}
=> "git config -l | sed -n 's/^user.name=\\(.*\\)$/{\\1}/p'"
irb(main):022:0> u = %x{#{cmd}}
=> "{Glenn Jackman}\n"
你爲什麼不做'git config --get user.name'? –