Как открыть xterm и отобразить в этом xterm из сценария ruby? - PullRequest
0 голосов
/ 05 октября 2019

Я хотел бы открыть терминал из моего сценария ruby, отобразить выходные данные сценария и выйти из терминала в конце сценария.

# open xterm -> `mate-terminal -e " ... "`
a = ''
while a != 'q'

  a = STDIN.getch

  puts "Hello World !" # output in xterm
end

# quit xterm

Возможно ли это, или мне нужно выполнить сценарийпозвонить другому?

РЕДАКТИРОВАТЬ:

Я могу сделать с двумя сценариями:

test1.rb

#!/usr/bin/env ruby
`mate-terminal -e "bash -c 'ruby test2.rb'"`

test2.rb

#!/usr/bin/env ruby
puts "hello world"
gets

запустить первый скрипт

$ ruby test1.rb

Но возможно ли это сделать с помощью одного скрипта?

EDIT2:
Я пытаюсь это сделать

#!/usr/bin/env ruby
obj1 = "object 1"
obj2 = "object 2"

file = <<EOF
#!/usr/bin/env ruby
require 'io/console'
a = ''
while a != 'q'
    puts "Do you want to see obj1, obj2 or quit ? .. enter 1, 2 or q"
    a = STDIN.getch
    case a
    when '1' then puts "#{obj1}"
    when '2' then puts "#{obj2}"
    end
end
EOF

File.open('display.rb', 'w') { |f| f.puts file }

`mate-terminal -e "bash -c 'ruby display.rb'"`

Это работает, но на самом деле это не красиво.
Есть ли другой способ?

1 Ответ

0 голосов
/ 05 октября 2019

Хотите развить текущий процесс? Не уверен, что вы подразумеваете под => «отобразить вывод скрипта». Какой сценарий?

Вам захочется прочитать этот пост. Вызов команд оболочки из Ruby

Возможно, вы захотите проверить IO.popen. В приведенном ниже коде вы заметите, что мы сначала направляем строку whoami в оболочку, а затем передаем строку whoami для put.

#! /usr/bin/env ruby

if __FILE__ == $0

  f = IO.popen("bash", "w")
  f.puts "whoami"
  f.close

  puts "whoami"

end

output

gerard
whoami

Эточто вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...