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 u或puts u.inspect查看输出中实际包含的字符来验证这一点.
而对于您的信息,Ruby中惯用的是在调用不带参数的方法时省略括号,例如u = foo.chop.