/ / Entrada de cadena con formato en un comando bash - linux, bash

Introduzca una cadena con formato en un comando bash - linux, bash

Me gustaría codificar algunas entradas al comando de mi script bash. Por ejemplo, tengo un script de bash como este:

#! /bin/bash
apt-get install python

y me gustaría codificar y y enter como la entrada para el apt-get comando en esta secuencia de comandos bash, ya que en algún momento se puede pedir al usuario que confirme el espacio de la instalación. Se que puedo hacer

apt-get install python <<< "y"

pasar una entrada de cadena y, ¿pero también puedo ingresar un formato especial, como la nueva línea "n" usando este método? ¡Gracias!

Respuestas

2 para la respuesta № 1

Todas las referencias se terminan automáticamente por unnueva línea, por lo que esto no puede hacer lo que quieres. (Muchos programas analizan si su entrada proviene de un TTY, y cambian si y cómo lo hacen en función del resultado; otros leen las solicitudes de un usuario directamente desde un TTY, y por lo tanto, omita por completo los contenidos canalizados, heredocs y herestrings).

Dicho esto, para una respuesta literal a la pregunta:

apt-get install python <<<$"yn"

También puedes usar un heredoc:

apt-get install python <<EOF
y

EOF

Dicho esto, para el caso específico de apt-get, no hagas eso!

apt-get install -y python

... es de hecho la mejor práctica. (Y para los comandos de administración del sistema en general, los desarrolladores generalmente anticipan el uso por lotes o por lotes, por lo que los usuarios finales rara vez son necesarios; consulte la documentación de cada programa en busca de argumentos como --batch, --force, --always o --yes; variables de entorno que especifican elementos que de otro modo se solicitarían; o comportamientos activados por tener stdin no ser un TTY).


2 para la respuesta № 2

apt-get -y install python es la forma correcta Según la página del manual:

-y, --sí, --asume-sí
Sí automático a las indicaciones; asume "sí" como respuestaa todas las indicaciones y ejecutar de forma no interactiva. Si se produce una situación no deseada, como cambiar un paquete retenido, intentar instalar un paquete no autenticado o eliminar un paquete esencial se produce entonces apt-get abortará. Elemento de configuración: APT :: Get :: Assume-Yes.