系统调用中的参数

时间:2012-11-13 21:16:08

标签: ruby

我正在阅读Ruby的system方法here的文档。如果我输入选项-P /public/google(指定要下载的目录),那么它算作一个参数还是两个参数,还是其中一个?

2 个答案:

答案 0 :(得分:3)

这实际上取决于您使用的是哪种系统。如果传递命令字符串,则ala:

system 'somecmd -P /public/google'

命令字符串将通过将解析它的shell进行解释,在空格上进行标记,从而导致somecmd的两个参数。同样,如果您使用参数列表表单并将字符串分解为以空格分隔的标记,例如:

system 'somecmd', '-P', '/public/google'
system *%w{ somecmd -P /public/google }

但是如果使用参数列表形式,并将-P /public/google作为单个参数发送,则somecmd将显示为具有嵌入空格的一个参数:

system 'somecmd', '-P /public/google'

答案 1 :(得分:1)

它算作两个。由于两者之间有一个空格,shell会看到它并将其拆分为-P/public/google(如果你使用了参数,即使在ruby中,shell也会将它们作为单独的参数传递给它们到剧本)。