command line에 입력을 ruby로 받아오려면 어떻게 해야 될까요?


command line에 입력을 ruby로 받아오려면 어떻게 해야되나요?

> cat input.txt | myprog.rb
> myprog.rb < input.txt
> myprog.rb arg1 arg2 arg3 ...

이런식으로 stdin을 받아올건데 제 코드 말고 다른 방법을 알고싶습니다.

소스코드

#!/usr/bin/env ruby

STDIN.read.split("\n").each do |a|
   puts a
end

ARGV.each do |b|
    puts b
end
  • 2016년 02월 23일에 작성됨

조회수 153


1 답변


좋아요
0
싫어요
채택취소하기

Unix 명령어 cat

#!/usr/bin/env ruby
puts ARGF.read

ARGF는 command-line이나 STDIN과 관련된 steam입니다.

스크립트에 전달된 인자는 ARGV 배열에 저장되고, 한 원소 안에 인자 하나가 저장되어 있습니다.

$ cat test.rb
#!/usr/bin/env ruby

ARGF.each_with_index do |line, idx|
    print ARGF.filename, ":", idx, ";", line
end

#d line에서 전달된 파일(login 포함)에 모든 줄을 출력합니다.
ARGF.each do |line|
    puts line if line =~ /login/
end

$ sudo cat input.txt | ./test.rb
-:0;input.txt 안에 있는 문자열입니다
-:1;나는 먹는다 밥
$ ./test.rb input.txt
input.txt:0;input.txt 안에 있는 문자열입니다
input.txt:1;나는 먹는다 밥
$ 
  • 2016년 02월 23일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close