新手问题 ruby -e 后单引号和双引号的区别

wcp1231 · 2013年09月06日 · 最后由 wcp1231 回复于 2013年09月10日 · 3496 次阅读

今天试了一下 ruby -e,发现后边的代码用双引号和单引号结果不同,求解。比如

> ruby -pe '$_' file
something...
> ruby -pe "$_" file
-e:1:in `<main>': undefined local variable or method `file' for main:Object (NameError)

图:

这是为啥啊?是和单引号双引号本身有关吗? 就比如 puts '#{1+1}' => '#{1+1}' 这样的单双引号的区别?

匿名 #1 2013年09月06日

echo "$_"

双引号会对变量求值,单引号不会

#1 楼 @jamchange @AlphaLiu 也就是说这个单双引号和 ruby 无关,只是因为 shell 会对双引号进行求值?

#3 楼 @wcp1231 是的。你可以对比 echo 一下"$"和'$'

#4 楼 @AlphaLiu 嗯,试了。我是不是要去看看鸟哥的书补补 linux?

我能吐槽鸟哥那书吹的比写的好多了么

#6 楼 @xstmjh 囧。。那 linux 什么书好啊?还是只能自己实践?

这是 shell 问题,和 ruby 没关系

#7 楼 @wcp1231 学系统的话 Unix 编程艺术真的很不错,还有很多视频教程,学 shell 的话多实践就行了,比如自己部署个 vps。peter 老师的 happycast 很不错,你可以看一下,是比较照顾新人的,一般都能很容易的理解。

命令不懂看这个http://explainshell.com/

#9 楼 @xstmjh 都是好东西啊。非常感谢~~

需要 登录 后方可回复, 如果你还没有账号请 注册新账号