gpt4 book ai didi

ruby - Bash I/O 重定向可以在 Ruby 脚本中工作吗?

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:29 26 4
gpt4 key购买 nike

在 Bash 中,我想比较 2 个不同 CSV 的字段(file1 的字段 2 和 file2 的字段 3):

diff <(cut -d, -f2 file1) <(cut -d, -f3 file2)

我试图在 Ruby 中更普遍地实现它:

def identical_files?(file1, field1, file2, field2)                                                                                                              
%x{diff <(cut -d, -f#{field1} #{file1}) <(cut -d, -f#{field2} #{file2})}.blank?
end

打印 %x{} block 的输出,我看到 sh: Syntax error: "("unexpected. Does I/O redirection not work when running shell Ruby 中的命令?这是因为它只受 bash 而不是 sh 的支持吗?

最佳答案

它不起作用是因为,如您收到的错误所示,Ruby 将 shell 输出到 sh,而不是 Bash。当然,sh 不支持该语法。

您可以改为显式调用 Bash:

`bash -c 'cat <(echo foo)'`  #=> "foo"

关于ruby - Bash I/O 重定向可以在 Ruby 脚本中工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14765645/

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