bash - scripts - pasar argumentos a un programa interactivo de forma no interactiva
scripts bash ejemplos (4)
Tengo un script bash que emplea el comando de lectura para leer argumentos a comandos de forma interactiva, por ejemplo, opciones de sí / no. ¿Hay alguna manera de llamar a esta secuencia de comandos en un guión no interactivo pasando los valores de opción por defecto como argumentos?
No es solo una opción que tengo que pasar al guión interactivo.
Muchas maneras
canalizar su entrada
echo "yes
no
maybe" | your_program
redirigir desde un archivo
your_program < answers.txt
use un documento aquí (esto puede ser muy legible)
your_program << ANSWERS
yes
no
maybe
ANSWERS
usa una cadena aquí
your_program <<< $''yes/nno/nmaybe/n''
Para tareas más complejas, se expect
( http://en.wikipedia.org/wiki/Expect ). Básicamente simula a un usuario, puede codificar una secuencia de comandos de cómo reaccionar a salidas de programas específicos y cosas relacionadas.
Esto también funciona en casos como ssh
que prohíbe las contraseñas de tubería.
Puede colocar los datos en un archivo y redirigirlos así:
$ cat file.sh
#!/bin/bash
read x
read y
echo $x
echo $y
Datos para el script:
$ cat data.txt
2
3
Ejecutando el script:
$ file.sh < data.txt
2
3
Solo quiero agregar una forma más. Lo encontré en otro lado, y es bastante simple. Digamos que quiero pasar "sí" para todas las indicaciones en la línea de comando para un comando "execute_command", entonces simplemente me gustaría conectar sí a él.
yes | execute_command
Esto usará sí como respuesta a todas las solicitudes de sí / no.