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

조회수 817회

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

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;나는 먹는다 밥
    $ 
    

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.