从Ruby中的shell命令中删除换行符

cod*_*ver 7 ruby shell rubygems

我试图在我的脚本中运行简单的shell命令,但即使使用chomp或chop也无法摆脱新行.

有什么我想念的吗?

      u=`echo  '#{l}' | cut -d: -f4`.chop()
      p2=`echo '#{l}' | cut -d: -f3`.chop()
      p1=`echo '#{l}' | cut -d: -f2`.chop()
      h=`echo  '#{l}' | cut -d: -f1`.chop()


#     **Cant get newlines to go after p1 and p2 !! ??**
      path="#{p1}/server/#{p2}abc"
      puts path


 Output:
 /usr (p1)
 /server
 /bin (p2) abc 
 Expected Output:
 /usr/server/binabc
Run Code Online (Sandbox Code Playgroud)

有什么建议 ?

根据一些建议,将我的代码更改为:

h, p1, p2, u = l.split /:/
u.strip 
u.chomp

puts u.inspect
Run Code Online (Sandbox Code Playgroud)

输出: "string\n"

基本上我以前尝试过使用chomp并遇到同样的问题.我是否需要以不同的方式调用chomp或添加任何宝石?

Phr*_*ogz 10

使用任一String#strip方法删除所有包装空格,或者String#chomp(注意'm')仅删除单个尾随换行符.

String#chop\r\n如果命令并不总是以换行符结尾,则删除可能有危险的最后一个字符(或对).

我假设您的代码不起作用,因为结果在输出的末尾有多个换行符\空格.(如果是这样,strip将为您工作.)但是,您可以通过删除调用chop,然后使用p uputs u.inspect查看输出中实际包含的字符来验证这一点.

而对于您的信息,Ruby中惯用的是在调用不带参数的方法时省略括号,例如u = foo.chop.


luk*_*kad 5

str.chomp将从字符串中删除换行符。 str.chop只删除最后一个字符。