Επισκέπτης Δημοσ. 22 Νοεμβρίου 2010 Δημοσ. 22 Νοεμβρίου 2010 Παιδιά μια βοήθεια.Ας πούμε ότι έχω ένα πρόγραμμα σε C το οποίο αρχικά μου ζητάει μια τιμή και την αναθέτει σε μια μεταβλητή.Εγώ θέλω-χωρίς τη χρήση γραμμής εντολών,αλλά με κάποιο script-να του λέω να βάλει την τιμή 1 π.χ.Δηλαδή ας πούμε ότι έχω ένα printf που λέει π.χ. "Βάλτε ένα αν είστε εργάτης ή δύο αν είστε εργοδότης" ή κάτι τέτοιο και ανάλογα με την επιλογή να μπαίνει σε ένα switch.Εγώ θέλω να τρέχω ένα script που να δίνει αυτόματα 1+Enter π.χ.Πώς γίνεται;
Xdanger Δημοσ. 22 Νοεμβρίου 2010 Δημοσ. 22 Νοεμβρίου 2010 για να δίνει 1+enter δεν ξέρω αλλά μπορείς να χρησιμοποιείσεις main arguments και να το τρέξεις μέσω script π.χ. έτσι >start myprogram.exe 1 c code > int main(int argc, char **argv) { switch argv ...... } δεν ξέρω αν βοηθάω
parsifal Δημοσ. 22 Νοεμβρίου 2010 Δημοσ. 22 Νοεμβρίου 2010 Υποθετικό πρόγραμμα σε C: > /* myprogram.c */ include <stdio.h> int main() { int reply; printf("Valte 1 an eiste ergaths h 2 an eiste ergodoths: "); scanf("%d", &reply); printf("\n"); switch(reply) { case 1: printf("Dwsate 1: Eiste ergaths!\n"); break; case 2: printf("Dwsate 2: Eiste ergodoths!\n"); break; default: printf("De dwsate oyte 1 oyte 2: Den eiste oyte ergaths oyte ergodoths!\n"); } return 0; } Bash script που κάνει αυτό που ζητάς: > #!/bin/bash # myscript.sh echo 1 | ./myprogram Output του παραπάνω script:
Επισκέπτης Δημοσ. 22 Νοεμβρίου 2010 Δημοσ. 22 Νοεμβρίου 2010 Parsifal ευχαριστώ πολύ.Αυτό ακριβώς ήθελα.Αν θέλω να το εξελίξω;Δηλαδή αν έχω 5 printf,scanf μες στο πρόγραμμα,πώς γίνεται;
parsifal Δημοσ. 22 Νοεμβρίου 2010 Δημοσ. 22 Νοεμβρίου 2010 Υπάρχουν διάφοροι τρόποι. Π.χ. ένας εύκολος είναι με δημιουργία από το script ενός προσωρινού αρχείου απαντήσεων. Έστω ότι το καλούμενο πρόγραμμα αναμένει όπως λες 5 απαντήσεις και θέλουμε αυτές να είναι μονοψήφιοι αριθμοί, ξεκινώντας από το 1 και τελειώνοντας με το 5: > #!/bin/bash tmp=/tmp/$0.tmp echo -e "1\n2\n3\n4\n5" > $tmp ./myprogram < $tmp rm $tmp Θα μπορούσε επίσης να γίνει με named pipes, αλλά θέλει νομίζω λίγο περισσότερο κώδικα από το παραπάνω παράδειγμα.
firewalker Δημοσ. 22 Νοεμβρίου 2010 Δημοσ. 22 Νοεμβρίου 2010 Γενικά πάντως για interactive προγράμματα που θέλουμε να τα βάλουμε σε script και δεν διαβάζουν από το stdin υπάρχει η expect.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.