gpt4 book ai didi

ruby - 如何遍历 popen 输出?

转载 作者:数据小太阳 更新时间:2023-10-29 08:16:33 24 4
gpt4 key购买 nike

我有这个简单的 ruby​​ 脚本:

redcricket@dev-006:~$ cat simple.rb  
#!/usr/local/bin/ruby

IO.popen 'ls -l', 'r+' do |f|
puts f.gets
end

当我运行它时,我得到的唯一输出是...

redcricket@dev-006:~$ ./simple.rb  
total 32

...我所期望的是...

redcricket@smp-mig-dev-006:~$ ls -l
total 32
drwxr-xr-x 4 redcricket co 4096 Dec 5 12:23 applications
-rw-r--r-- 1 redcricket co 464 Oct 5 16:23 config
drwxr-xr-x 72 redcricket co 4096 Dec 5 15:11 docs
drwxr-xr-x 3 root root 4096 Dec 5 12:14 oradiag_root
drwxr-xr-x 5 redcricket co 4096 Dec 5 16:22 platform
-rwxr-xr-x 1 redcricket co 373 Dec 5 16:30 process_yum_output.rb
-rwxr-xr-x 1 redcricket co 2159 Nov 28 16:24 SetupSSHPK.sh
-rwxr-xr-x 1 redcricket co 142 Dec 5 16:31 simple.rb

...我想我需要以某种方式迭代 f.gets?

谢谢!

最佳答案

ruby IO#gets method只返回 IO 对象的下一行输入。

为了得到所有的行你可以重复调用“gets”直到它为零,或者调用read获取整个字符串,或 readlines获取数组中的输入行。

IO.popen('ls -l','r') { |f| puts $_ while f.gets }
IO.popen('ls -l','r') { |f| puts f.read }
IO.popen('ls -l','r') { |f| puts f.readlines }

关于ruby - 如何遍历 popen 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13732951/

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