#go
#Вперед
Вопрос:
Я использую Google Cloud Run для запуска приложения (например, пример приложения) У меня есть следующий сценарий в Go:
package main
import (
"fmt"
"log"
"net/http"
"os"
"os/exec"
)
func handler(w http.ResponseWriter, r *http.Request) {
log.Print("helloworld: received a request")
cmd := exec.CommandContext(r.Context(), "/bin/sh", "script.sh")
cmd.Stderr = os.Stderr
out, err := cmd.Output()
if err != nil {
w.WriteHeader(500)
}
w.Write(out)
}
func main() {
log.Print("helloworld: starting server...")
http.HandleFunc("/", handler)
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
log.Printf("helloworld: listening on %s", port)
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))
}
Мне нужно войти.распечатать тело ответов из script.sh команды. Как я могу это сделать?
Комментарии:
1. blog.kowalczyk.info/article/wOYk/…
2. Ваш вопрос, похоже, отвечает сам на себя,
log.Print
вызывая васlog.Print
, который вы уже использовали в другом месте своего кода, поэтому неясно, с чем у вас возникли проблемы. Можете ли вы уточнить свой вопрос?3. Нет отношения к облачному запуску, это чистый вопрос Go. У вас есть много учебников / примеров этого в Интернете. Однако зачем вызывать SH-скрипт в коде Go? Почему бы не закодировать все в Go?
Ответ №1:
На вашем сервере
w.Запись (вывод)
отправляет ответ от script.sh как []байт. Вы можете добавить над этой строкой следующий журнал.Печать (строка (out))