我有一个非常基本的问题。我正在运行一个Ruby脚本来访问Linux中目录的内容。执行ruby脚本时,目录将通过命令行传递。
我的问题是如何在ruby命令中使用命令行参数?
我设置如下:
usrDirectory = ARGV[0]
lsCmd = `ls -l`
我需要使用像ls -l usrDirectory这样的东西。 我可以将它插入命令,就像是吗?
答案 0 :(得分:2)
以上是正确的,如果你想让ls
输出到标准输出,这会让它更清洁:
system("ls", "-l", dir)
这将使Ruby将输出打印到标准输出,而不是像上面那样将输出放在变量中。
答案 1 :(得分:1)
您应该能够在不使用shell的情况下获得所需内容,例如:
usr_dir = "/tmp"
files = Dir["#{usr_dir}/*"]
p files
无论您做什么,在将用户输入的文本作为将被解析和执行的内容的一部分传递给shell时,请非常小心。例如,如果用户输入(而不是目录名称)
,会发生什么; rm -rf / *
答案 2 :(得分:0)
您可以在命令字符串中使用表达式扩展和转义序列:
lsCmd = `ls -l #{usrDirectory}`
答案 3 :(得分:0)
您有两种选择。你可以这样做:
lsCmd = `ls -l #{usrDirectory}`
或
command = "ls -l " + usrDirectory
lsCmd = %x[ #{command} ]