gpt4 book ai didi

ruby - Ruby 中的局部变量传递给 Linux 终端

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:08:27 27 4
gpt4 key购买 nike

这可能没有我做的那么难,但是如何将局部变量作为目录的一部分干净地传递到命令行?

我正在连接相似的文本文件(基于字符串)并将它们存储在包含相同字符串的新文本文件中。

  • 假设我有一个名为 class 的目录,其中包含一个以每个学生命名的文本文件。格式为 LastName_FM
  • 我还有一个名为 students 的学生姓氏列表

例如:

for lastname in students
'cat class/*'+lastname+'*.txt > /class/'+lastname+'_list.txt'
end

理论上,如果我的文件名为:

  • Smith_JM.txt
  • Smith_TR.txt
  • Smith_WE.txt
  • 2Smith_WE.txt(同名的不同学生。)

我最终会得到一个名为 Smith_list.txt 的文件,其中包含四个文件的内容。

感谢任何指点,我是 Ruby 的新手。

最佳答案

您可以将系统命令包含在backticks 中并将变量插入到命令中,因为反引号方法支持插值。

这是一个启动 gedit 的人为示例:

local_var = "gedit"
`#{local_var}` # interpolation syntax is #{...}

编辑:这是另一个演示 block 内插值并将 foo.txt 的内容写入 bar.txt 的示例。您可以使用 for 循环执行类似的操作,但这不是常见的 ruby​​ 习惯用法。

files = ['foo.txt']

files.each do |f|
puts "#{f}" # block variable interpolated within double quotes
`cat #{f} > bar.txt` # block variable interpolated within backticks
end

关于ruby - Ruby 中的局部变量传递给 Linux 终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33290892/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com