루비 로 셸 명령 을 실행 하 는 여섯 가지 방법
2385 단어 셸 명령
운영 체제 셸 명령 을 호출 해 야 할 때 Ruby 는 우리 에 게 여섯 가지 임 무 를 완성 하 는 방법 을 제공 했다.
1. Exec 방법
Kernel \ # exec 방법 은 현재 프로 세 스 대신 지정 한 명령 을 호출 합 니 다.
>>exec 'echo "hello $HOSTNAME"'
hello nate.local
주의해 야 할 것 은 exec 방법 은 echo 명령 으로 irb 프로 세 스 를 대체 하여 irb 를 종료 한 것 입 니 다.주요 단점 은 루비 스 크 립 트 에서 이 명령 이 성공 인지 실패 인지 알 수 없다 는 것 이다.
2. System 방법
Kernel \ # system 방법 은 명령 이 같 지만 현재 프로 세 스 를 덮어 쓰 지 않도록 키 셸 을 실행 합 니 다.명령 이 성공 하면 true 로 돌아 갑 니 다. 그렇지 않 으 면 false 로 돌아 갑 니 다.
>> system 'echo "hello $HOSTNAME"'
hello nate.local
=> true
>> system 'false'
=> false
>> puts $?
256
=> nil
>>
3. 따 옴 표 (Backticks, Esc 키 아래 에 있 는 키)
$ irb
>> today = `date`
=> "Mon Mar 12 18:15:35 PDT 2007n"
>> $?
=> #<Process::Status: pid=25827,exited(0)>
>> $?.to_i
=> 0
이런 방법 은 가장 보편적 인 용법 이다.그것 도 하나의 셸 에서 실행 된다.
4.IO#popen
$ irb
>> IO.popen("date") { |f| puts f.gets }
Mon Mar 12 18:58:56 PDT 2007
=> nil
5.open3#popen3
$ irb
>> stdin, stdout, stderr = Open3.popen3('dc')
=> [#<IO:0x6e5474>, #<IO:0x6e5438>, #<IO:0x6e53d4>]
>> stdin.puts(5)
=> nil
>> stdin.puts(10)
=> nil
>> stdin.puts("+")
=> nil
>> stdin.puts("p")
=> nil
>> stdout.gets
=> "15n"
6.Open4#popen4
$ irb
>> require "open4"
=> true
>> pid, stdin, stdout, stderr = Open4::popen4 "false"
=> [26327, #<IO:0x6dff24>, #<IO:0x6dfee8>, #<IO:0x6dfe84>]
>> $?
=> nil
>> pid
=> 26327
>> ignored, status = Process::waitpid2 pid
=> [26327, #<Process::Status: pid=26327,exited(1)>]
>> status.to_i
=> 256
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[하루 셸 명령] 텍스트 내용 조작 시리즈 - awkawk 는 데이터 흐름 에 사용 되 어 열 과 줄 을 조작 할 수 있 도록 설계 되 었 습 니 다.sed 는 일치 합 니 다. 그들 은 어느 부분 도 스 크 립 트 에 나타 나 지 않 을 수 있 습 니 다.스 크 립...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.