Exemple eco

Programa que fa una cosa semblant a la comanda interna de bash echo. La comanda echo posa en una línia al canal estandard de sortida, tots els arguments rebuts separats per un espai. El programa eco posa en cada línia del canal estandard de sortida un argument del arguments rebuts, indicant a més el seu ordre en la línia.

  1. Fitxer eco

    #!/usr/bin/python3
    import sys
    
    if __name__ == '__main__':
        from eco import eco
        sys.exit(eco(sys.argv))
    
  2. Fitxer eco.py

    import sys
    
    def eco(arguments):
        for i in range(len(arguments)):
            print('argument ',i,' és ',arguments[i])
        return 0 # Ha anat bé.
    
    if __name__ == '__main__':
        sys.exit(eco(sys.argv))
    
  3. Fitxer eco.c

    #include<stdio.h>
    #include<stdlib.h>
    
    int main(int argc, char * argv[]) {
      int i;
      
      for(i = 0; i<argc; i++) {
        printf("argument %d és %s\n", i, argv[i]);
      }
      return EXIT_SUCCESS;
    }
    

Un cop descarregats, estudieu que fa i com ho fa cada fitxer. En bash, feu:

$ chmod +x eco
$ export PATH=$PATH":."
$ eco hola que tal
argument  0  és  ./eco
argument  1  és  hola
argument  2  és  que
argument  3  és  tal
$ python3 eco.py hola que tal
argument  0  és  eco.py
argument  1  és  hola
argument  2  és  que
argument  3  és  tal
$ python3
>>> from eco import eco
>>> import sys
>>> eco(sys.argv)
argument  0  és
0
>>> eco('hola que tal'.split())
argument  0  és  hola
argument  1  és  que
argument  2  és  tal
0
>>> exit()

El programa en C, primer cal compilar-lo (primera línia amb el resultat d’un nou fitxer objecte eco.o), després muntar-lo (segona línia creant l’executable en codi màquina ecu [1])

$ gcc -c eco.c
$ gcc -o ecu eco.o
$ ecu hola que tal
argument 0 és ecu
argument 1 és hola
argument 2 és que
argument 3 és tal

Footnotes