在ruby程序开始时编写以下命令有什么用?
#!/usr/local/bin/ruby -w
Run Code Online (Sandbox Code Playgroud)
它是特定于OS的命令吗?它对窗户上的红宝石有效吗?如果没有,那么windows中的等效命令是什么?
Kot*_*lar 65
它被称为Shebang.它告诉程序加载器使用什么命令来执行文件.因此,当你运行时./myscript.rb,它实际上转换为/usr/local/bin/ruby -w ./myscript.rb.
Windows使用文件关联用于相同的目的; shebang线没有效果(编辑:见FMc的答案),但也没有造成任何伤害.
一种可移植的方式(在Cygwin和RVM下工作)将是:
#!/usr/bin/env ruby
Run Code Online (Sandbox Code Playgroud)
这将使用env命令找出Ruby解释器的位置,并运行它.
编辑:显然,正是Cygwin会出错,/usr/bin/env ruby -w并试图查找ruby -w而不是ruby.您可能希望将效果-w放入脚本本身.
Abl*_*Mac 28
Shebang行是可选的,如果你运行ruby解释器并将脚本作为命令行参数传递给它,那么你在命令行上设置的标志就是ruby运行的标志.
Shebang系列根本不是红宝石(除非你想把它称为红宝石评论).它真的是shell脚本.大多数linux和unix用户都运行BASH shell(代表Borne Again SHell),但几乎每个操作系统都有一个命令解释器,它将尊重Shebang.
"#!/ usr/local/bin/ruby -w"
"她"部分是octothorp(#),又名英镑符号,数字符号,哈希标记,现在哈希标记(我仍称它为tic-tac-toe,只是因为cuz).
"爆炸"部分是惊叹号(!),就像敲打拳头在桌子上惊呼命令一样.
在Windows上,"Shell"是命令提示符,但即使没有黑色DOS窗口,命令解释程序也将根据文件关联运行脚本.如果命令解释器或编程语言正在阅读shebang并确保标志得到尊重,那么重要的一点是,它们很荣幸.
"-w"是一面旗帜.基本上它是ruby在运行脚本时遵循的指令.在这种情况下," - w"会打开警告,因此在执行脚本期间,您将获得额外警告(脚本保持运行)或错误(脚本停止运行).在程序期间可以捕获警告和例外并采取措施.这些帮助程序员发现导致意外行为的问题.
我喜欢快速而肮脏的脚本来完成工作,所以没有-w.我也是高质量可重复使用编码的粉丝,所以一定要使用-w.适合工作的正确工具.如果你正在学习,那么总是使用-w.当你知道自己在做什么,并且在快速任务中停止使用-w时,你会开始弄清楚它何时会帮助使用-w而不是花费数小时来解决问题.(提示,当问题的原因不明显时,只需添加-w并运行它以查看您获得的内容).
"-w"需要一些额外的编码才能明确表达你的意思,所以它不会立即解决问题,但如果你已经用-w编写代码,那么添加必要的位就不会有太多麻烦制作一个带有警告的小脚本.事实上,如果你习惯使用-w,你可能已经用这种方式编写代码了 - 除非你忘记了什么,否则-w不会改变任何东西.Ruby需要更少的"管道代码",然后大多数(可能是所有)编译语言,如C++,所以选择不使用-w不允许你节省很多打字,它只是让你在尝试运行脚本之前少思考(恕我直言) ).
-v是详细模式,不会更改脚本的运行(不会引发警告,也不会在新位置停止脚本).几个站点和讨论调用-w verbose模式,但-w是警告模式,它会更改脚本的执行.
虽然shebang行的执行行为不会直接转换为Windows世界,但该行中包含的标志(例如-w您的问题中的标记)确实会影响正在运行的Ruby脚本.
Windows机器上的示例1:
#!/usr/local/bin/ruby -w
puts $VERBOSE # true
Run Code Online (Sandbox Code Playgroud)
Windows机器上的示例2:
#!/usr/local/bin/ruby
puts $VERBOSE # false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35978 次 |
| 最近记录: |