¿Es posible tener un script bash que maneje automáticamente las solicitudes que normalmente se presentarían al usuario con acciones predeterminadas? Actualmente estoy usando un script bash para llamar a una herramienta interna que mostrará mensajes al usuario (solicitando S/N) para completar acciones, sin embargo, el script que estoy escribiendo debe estar completamente "sin manos", por lo que Necesito una forma de enviar Y|N
al aviso para permitir que el programa continúe la ejecución. es posible?Hacer que el script bash responda solicitudes interactivas
Respuesta
Esto no es "finalización automática", esto es automatización. Una herramienta común para estas cosas se llama Expect.
También puede salirse con solo la entrada de tubería de yes
.
Lamentablemente no puedo esperar porque sus requisitos de espacio son muy estrictos en el sistema que ejecuta esto, así que no puedo agregar paquetes adicionales, pero puse 'sí' en el truco, afortunadamente todas las instrucciones solo requerían un 'y ' de todas formas. Gracias. – tj111
Sin embargo 'Sí | command' puede no funcionar siempre. Si solo es para fines de instalación, me caí usando '-y' es una opción mejor y preferida. –
Un simple
echo "Y Y N N Y N Y Y N" | ./your_script
Esto permite pasar cualquier secuencia de "Y" o "N" a la secuencia de comandos.
Si tuviera que enviar cualquier 'N's, habría usado este método, pero solo necesitaba Y, así que fui con' yes'. Lástima que no puedo aceptar dos respuestas, ya que ambas son correctas. – tj111
;) Bueno, si alguna vez necesitas enviar alguna 'N', ahora tienes una buena manera de hacerlo. –
Esta solución alternativa es brillante para mi comportamiento perezoso de CLI. ¡Gracias! – mbb
Encontré que la mejor manera de enviar entradas es utilizar cat y un archivo de texto para transmitir cualquier entrada que necesite.
cat "input.txt" | ./Script.sh
Si sólo dispone Y enviar:
$> yes Y |./your_script
Si sólo tiene N enviar:
$> yes N |./yout_script
En mi situación que tenía que responder a algunas preguntas sin S o N pero con texto o en blanco. Encontré que la mejor manera de hacer esto en mi situación era crear un archivo shellscript. En mi caso lo llamé autocomplete.sh
Necesitaba responder algunas preguntas para un exportador de esquema doctrinal para que mi archivo se viera así.
- Este es sólo un ejemplo -
php vendor/bin/mysql-workbench-schema-export mysqlworkbenchfile.mwb ./doctrine << EOF
`#Export to Doctrine Annotation Format` 1
`#Would you like to change the setup configuration before exporting` y
`#Log to console` y
`#Log file` testing.log
`#Filename [%entity%.%extension%]`
`#Indentation [4]`
`#Use tabs [no]`
`#Eol delimeter (win, unix) [win]`
`#Backup existing file [yes]`
`#Add generator info as comment [yes]`
`#Skip plural name checking [no]`
`#Use logged storage [no]`
`#Sort tables and views [yes]`
`#Export only table categorized []`
`#Enhance many to many detection [yes]`
`#Skip many to many tables [yes]`
`#Bundle namespace []`
`#Entity namespace []`
`#Repository namespace []`
`#Use automatic repository [yes]`
`#Skip column with relation [no]`
`#Related var name format [%name%%related%]`
`#Nullable attribute (auto, always) [auto]`
`#Generated value strategy (auto, identity, sequence, table, none) [auto]`
`#Default cascade (persist, remove, detach, merge, all, refresh,) [no]`
`#Use annotation prefix [ORM\]`
`#Skip getter and setter [no]`
`#Generate entity serialization [yes]`
`#Generate extendable entity [no]` y
`#Quote identifier strategy (auto, always, none) [auto]`
`#Extends class []`
`#Property typehint [no]`
EOF
Lo que me gusta de esta estrategia es que se puede comentar lo que sus respuestas son EOF y el uso de una línea en blanco es sólo que (la respuesta por defecto) Resulta que, por cierto, esta herramienta exportadora tiene su propia contraparte JSON para responder estas preguntas, pero me di cuenta después de que hice esto =).
para ejecutar la secuencia de comandos simplemente en el directorio que desee y ejecute 'sh autocomplete.sh'
en la terminal.
En pocas palabras mediante el uso de < < EOL & EOFen combinación con las tuberías de retorno puede responder a cada pregunta de la solicitud de que sea necesario. Cada nueva línea es una nueva respuesta.
Mi ejemplo simplemente muestra cómo se puede hacer esto con los comentarios que también usan el carácter `para que recuerde qué es cada paso.
Tenga en cuenta que la otra ventaja de este método es que puede responder con más de Y o N ... ¡de hecho puede responder con espacios en blanco!
Espero que esto ayude a alguien.
Háganme saber por qué el voto a la baja, esto tomó mucho tiempo para descubrir que esta era la respuesta (y fue solo una respuesta en mi caso). Lo puse aquí para compartirlo con la comunidad y debería estar en blanco para el preguntador. "¿Es posible tener un script bash que maneje automáticamente las solicitudes que normalmente se presentarían al usuario con acciones predeterminadas?", Sí, usar lo que tengo arriba es un método para hacerlo. –
- 1. Script Bash para ejecutar el script php
- 2. UITextField en UIAlertView en iPhone: ¿cómo hacer que responda?
- 3. Hacer que UISearchBar responda primero cuando vea Cargas
- 4. ¿Cómo hacer el script bash para pedir una contraseña?
- 5. Haciendo que el contenido div responda
- 6. ¿Ejecuta el script bash desde otro script sin esperar a que el script termine de ejecutarse?
- 7. ¿Cómo crear un bucle en bash que está esperando que un servidor web responda?
- 8. Cómo hacer que el script php ejecute otro script php
- 9. Indenting Bash Script Output
- 10. Bash Script Llama a otro script bash y espera a que se complete antes de continuar
- 11. ¿Mejor forma de hacer un autoarchivo de script bash?
- 12. Cómo hacer AWK utilizar la variable creada en Bash script
- 13. Script bash de autodejección
- 14. Script Git commit bash
- 15. Solicitudes simultáneas al script PHP
- 16. Script Bash no entendido por Ubuntu Bash
- 17. Bash Script - Leer archivo binario
- 18. ¿Puedes hacer macros o grabaciones interactivas en vim?
- 19. ¿Es posible hacer que un script bash shell interactúe con otro programa de línea de comando?
- 20. Script Bash: uso del comando "script" de un script bash para iniciar sesión
- 21. ¿Cómo crear un script bash que tome argumentos?
- 22. convertir notación científica script bash
- 23. Cómo atrapar el código de salida en el script Bash
- 24. Consolas interactivas en línea
- 25. Bash: script no absoluto #! ¿Interprete?
- 26. Bash script ¿Qué es: = para?
- 27. Herramientas interactivas .NET Charting?
- 28. Salida JSON del script Bash
- 29. Ejecutando script bash desde java
- 30. Sentencias Bash script if if
esto no es "autocompletado" ... como @unwind dice, es "automatización" – benzaita
Ejemplo de uso de 'yes' para hacer esto: http://unix.stackexchange.com/questions/47344/the-yes- command # comment65866_47344 – Droogans