我想从 ruby 脚本调用一些系统命令,而无需 shell 摆弄东西。问题是在编码时我不知道会有多少参数。
如果我正在通过 shell,我会通过连接来构建命令行......
我曾经在 perl 中通过传递 system 和 array 以及我想要的许多参数来做到这一点。这是因为在 perl 中传递参数的方式。不出所料,Ruby 不支持这一点。
有没有办法做到这一点?
将参数放入数组中:
cmd = %w[ls -l -a]
Run Code Online (Sandbox Code Playgroud)
然后在调用时使用该数组system:
system(*cmd)
# -----^ splat
Run Code Online (Sandbox Code Playgroud)
这与说:
system('ls', '-l', '-a')
Run Code Online (Sandbox Code Playgroud)
调用方法时使用相同的语法来接受可变数量的参数:
def variadic_method(*args)
# This splat leaves all the arguments in the
# args array
...
end
Run Code Online (Sandbox Code Playgroud)