Προς το περιεχόμενο

Script σε BASH


Επισκέπτης

Προτεινόμενες αναρτήσεις

Δημοσ.

Παιδιά μια βοήθεια.Ας πούμε ότι έχω ένα πρόγραμμα σε C το οποίο αρχικά μου ζητάει μια τιμή και την αναθέτει σε μια μεταβλητή.Εγώ θέλω-χωρίς τη χρήση γραμμής εντολών,αλλά με κάποιο script-να του λέω να βάλει την τιμή 1 π.χ.Δηλαδή ας πούμε ότι έχω ένα printf που λέει π.χ. "Βάλτε ένα αν είστε εργάτης ή δύο αν είστε εργοδότης" ή κάτι τέτοιο και ανάλογα με την επιλογή να μπαίνει σε ένα switch.Εγώ θέλω να τρέχω ένα script που να δίνει αυτόματα 1+Enter π.χ.Πώς γίνεται;

Δημοσ.

για να δίνει 1+enter δεν ξέρω αλλά μπορείς να χρησιμοποιείσεις main arguments και να το τρέξεις μέσω script π.χ. έτσι

 

>start myprogram.exe 1

c code

 

>
int main(int argc, char **argv)
{  
  switch argv
  ......
}        

 

δεν ξέρω αν βοηθάω

Δημοσ.

Υποθετικό πρόγραμμα σε 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:

post-4351-129063141928_thumb.png

Δημοσ.

Parsifal ευχαριστώ πολύ.Αυτό ακριβώς ήθελα.Αν θέλω να το εξελίξω;Δηλαδή αν έχω 5 printf,scanf μες στο πρόγραμμα,πώς γίνεται;

Δημοσ.

Υπάρχουν διάφοροι τρόποι. Π.χ. ένας εύκολος είναι με δημιουργία από το script ενός προσωρινού αρχείου απαντήσεων. Έστω ότι το καλούμενο πρόγραμμα αναμένει όπως λες 5 απαντήσεις και θέλουμε αυτές να είναι μονοψήφιοι αριθμοί, ξεκινώντας από το 1 και τελειώνοντας με το 5:

 

>
#!/bin/bash

tmp=/tmp/$0.tmp
echo -e "1\n2\n3\n4\n5" > $tmp
./myprogram < $tmp
rm $tmp

 

 

Θα μπορούσε επίσης να γίνει με named pipes, αλλά θέλει νομίζω λίγο περισσότερο κώδικα από το παραπάνω παράδειγμα.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...