当我通过控制台给它一个参数时,我正在尝试执行命令exec,但我不知道如何制作它。
exec('ls -l #{argv[1]}')
Argv [1]是我通过控制台传递的参数,但它没有做任何事情。
答案 0 :(得分:2)
除非您需要shell执行命令(例如,您重定向到/从文件重定向),否则您可以将参数列表传递给exec
:
exec 'ls', '-l', ARGV[1]
您是否知道exec
取代正在运行的ruby进程?你想要system
吗?
https://ruby-doc.org/core-2.5.0/Process.html#method-c-exec
https://ruby-doc.org/core-2.5.0/Kernel.html#method-i-system
答案 1 :(得分:0)
您的代码中存在几个小问题:
ls -l #{argv[1]}
(如此处所写)。Object
的类argv
的变量,常量或方法;有一个global constant named ARGV
包含命令行参数。ARGV
不包含脚本名称(它存储在单独的属性中),但只包含其位置参数;因此,命令行中的第一个参数存储在索引0
,而不是1
。综合以上所有内容,您的脚本应为:
exec("ls -l #{ARGV[0]}")