2016-12-03 4 views
1

Ich würde gerne ein Argument an eine C++ - Programm in einem Shell-Skript übergeben, die es nur auf der Konsole druckt. Allerdings möchte ich gnu parallel dazu verwenden. Im Moment habe ich ein Shell-Skript haben,Parallele Gnu übergeben Argumente in Shell-Skript

#!/bin/sh 
parallel -k echo ::: 1 2 3 > cTest 
parallel ./hello :::: cTest 

wo ich eine Datei ‚CTest‘ zuerst erstellen, die die Elemente enthält, die an die ausführbare Datei übergeben wird ‚Hallo‘.

Im Moment druckt das obige nur Leerzeichen. Ich habe versucht zu tun,

parallel echo :::: cTest | ./hello 

aber nur druckt ‚2‘ (I bin auch besorgt, dass die oben nicht parallel sein).

Weiß jemand wie man das funktioniert?

+0

Sie sind das Richtige zu tun, so lassen Sie uns ausschließen erstens, dass es etwas falsch mit der Installation ist. Funktioniert https://www.gnu.org/software/parallel/parallel_tutorial.html wie erwartet? –

+0

Alles funktioniert gut - Ich habe das Tutorial Teil für Teil durchgelaufen, bevor ich angefangen habe. – ben18785

Antwort

1

Dies funktioniert für mich:

#!/bin/sh 

cat <<EOF >hello.cpp 

#include <iostream> 

int main(int argc, char** argv) { 
    std::cout << "Have " << argc << " arguments:" << std::endl; 
    for (int i = 0; i < argc; ++i) { 
    std::cout << argv[i] << std::endl; 
    } 
} 

EOF 
g++ hello.cpp -o hello 

parallel -k echo ::: 1 2 3 > cTest 
parallel ./hello :::: cTest 
Verwandte Themen