Script en UNIX

Spank

Buenas, tengo un problema para hacer un script. Es un programa de Ajedrez que está hecho en C y en LEX, y para comprobar que las órdenes estan bien quiero automatizar para que la propia consola me escriba y me pulse intro. El principio del Script es este

make clean
make
./ajedrez

ahora si yo quisiera que la consola escribiera "inicio_juego" y pulsara enter qué es lo que tendría que poner? puesto que con echo no vale ya que se encuentra al ejecutar dentro del programa y por tanto la orden echo ya no la reconoce.

Muchas gracias.

shortyStyle

No se si es esto lo que necesitas, pero poniendo un parámetro cuando ejecutas el programa:

./ajedrez iniciar_juego

Y en el código iniciar_juego se guarda en una matriz con un nombre especial que ahora mismo no recuerdo (lo siento hace tiempo que no programo y estoy pez).

edit: #7 ha dicho exactamente lo que te quería decir yo, argc y argv :d

Get

eso suponiendo q el juego soporte parametros adicionales a la orden de ejecucion. pèro en principio,

si maces make y lo ejecutas desde ahi mismo no necesitas hacer el install.

LOc0

¿Has probado esto?

echo iniciar_juego | ./ajedrez

Salu2 ;)

Spank

voy a probarlo, la verdad que buscaba algo como para que el sistema solo escribiera en la consola automáticamente, porque hay que hacer unos pocos movimientos antes de llegar a la función conflictiva y recompilar y volver a escribir muchas veces se hace eterno

sólamente quería saber si podías ordenar a la consola que escribiese algo independientemente de lo que la consola esté haciendo (en este caso metida en el progama)

LOc0

Hola. Si lo anterior te funciona podrías hacerte un fichero de texto con la lista de movimientos en plan:

iniciar_juego
mov1_blancas
mov1_negras
mov2_blancas
mov2_negras
.
.
.
movn_blancas
movn_negras
EOF

y llamarlo así:

$cat movimientos.txt | ./ajedrez

Salu2 ;)

Kartalon

Si quieres pasar parámetros en C tienes que indicarlo en el main

int main (int argc, char *argv[])

Donde argc es el número de argumentos pasados y argv es una matriz a punteros caracter que contienen los parámetros (siendo la primera entrada del array el propio nombre del programa)

Por lo tanto, si ejecutas "./ajedrez iniciar_juego" tendrás la cadena de caracteres apuntada por el puntero almacenado en argv[1]

(También puedes usar las tuberías del sistema como te dicen por arriba, pero teniendo la entrada de argumentos no lo veo necesario...)

maRc

Hombre, si el juego está enfocado a que reciba instrucciones a través de la entrada estándar, mejor haciendolo con una tubería, que no modificando el programa entero ;)

Usuarios habituales

  • maRc
  • Kartalon
  • LOc0
  • Spank
  • Get
  • shortyStyle