Подтвердить что ты не робот

Как захватить стандартный вывод команды оболочки в elisp?

Я хочу запустить команду оболочки в Emacs и записать полный вывод в переменную. Есть ли способ сделать это? Например, я хотел бы установить hello-string в "hello" следующим образом:

(setq hello-string (capture-stdout-of-shell-command "/bin/echo hello"))

Существует ли функция capture-stdout-of-shell-command, и если да, то каково ее настоящее имя?

4b9b3361

Ответ 1

Соответствует ли shell-command-to-string вашей цели?
Например:

(shell-command-to-string "/bin/echo hello")

Надеюсь, что это поможет.

Ответ 2

У меня есть предложение сделать это, чтобы продлить ответ Исе Вистерия. Попробуйте использовать что-то вроде этого:

(setq my_shell_output
  (substring 
    (shell-command-to-string "/bin/echo hello") 
   0 -1))

Это должно установить строку "hello" как значение my_shell_output, но чисто. Использование (substring) исключает конечный \n, который имеет тенденцию возникать, когда emacs вызывает команду оболочки. Это беспокоит меня в emacs, работающем в Windows, и, вероятно, происходит и на других платформах.