我在我的文件顶部有这个:
#!/usr/bin/env ruby -s
它在没有-s
的情况下正常运行并且运行正常但是我想要简单的开关,所以我希望-s
能够正常工作。当我用-s
运行时,我得到:
/usr/bin/env: ruby -s: No such file or directory
这是语法错误吗?
答案 0 :(得分:2)
您只能将单个选项传递给 shebang 行中命名的命令。或者说真的,如果你传递多个参数,它们就不会爆炸而是作为单个参数传递。在这种情况下像:
/usr/bin/env 'ruby -s'
但文件'ruby -s'
不存在。这就是错误信息的原因。
按照Ruby的手册页,你应该使用以下的shebang:
#! /usr/bin/ruby -s
# :prints "true" if invoked with `-xyz' switch.
print "true\n" if $xyz
您需要直接调用ruby而不是使用/usr/bin/env
。这是一个缺点,但这样做,您可以像这样调用脚本:
./script.rb -xyz