Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

384
Visualizações
Devolver valores de un programa C++ a un script bash

Tengo un programa C++ (en Linux) que calcula un resultado doble y quiero escribir un script bash que ejecute el programa una cantidad variable de veces y promedie estos resultados para mí. Para simplificar, considere el siguiente código:

principal.cpp:

 int main() { cout << "Some other stuff\n"; double result = foo(); return 0; }

script.sh:

 sum = 0 num = $1 for((i = 0; i < $num; i++)); do result = ./a.out; #store the result somehow? sum = $sum + $result done avg = $sum / $num echo "Average: " $avg

¿Hay una manera fácil de pasar el resultado del programa al script bash? Leí sobre el uso del código de salida, pero el tipo de retorno es doble, así que no creo que funcione. Analizar el valor de la salida de cadena es difícil de manejar porque el programa tiene otra salida de terminal.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

La forma UNIX de hacer esto es escribir datos no esenciales en stderr y escribir el resultado real en stdout. De esa manera, simplemente puede hacer

 int main() { cerr << "This is output that won't be captured." << endl; cout << "3.141592" << endl; }

y use la sustitución de comandos para capturarlo:

 result=$(./a.out)

Una forma más fea de hacerlo que no requiere cambiar la salida es escribir en otro descriptor de archivo:

 int main() { char* foo = "3.141592\n"; write(42, foo, strlen(foo)); }

Esto le permitirá capturar la salida con:

 result=$(./a.out 42>&1 > /dev/null)

Tenga en cuenta que su script de shell tiene varios errores de sintaxis. Pruebe shellcheck para resolver automáticamente muchos de ellos y no dude en publicar una pregunta sobre los problemas que no puede resolver.

over 4 years ago · Santiago Trujillo Relatório

0

¿Por qué no usa el valor de retorno como datos para su script bash?

 int main() { return 46; }

El resultado es el siguiente (sí, es script bash):

 ./a.out ; echo $? 46

En el caso de valores dobles, puede usar este enfoque:

 #include <iostream> int main() { double res = 46.001; std::cout << res << std::endl; return 0; }

Y la salida:

 a=`./a.out`; echo $a 46.001
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda