<Anterior | Contenido | Siguiente>
leer - Leer valores de entrada estándar
La read El comando incorporado se usa para leer una sola línea de entrada estándar. Este comando se puede utilizar para leer la entrada del teclado o, cuando se emplea la redirección, una línea de datos de un archivo. El comando tiene la siguiente sintaxis:
leer [-opciones] [variable...]
donde opciones es una o más de las opciones disponibles que se enumeran a continuación y variable es el nombre de una o más variables utilizadas para contener el valor de entrada. Si no se proporciona un nombre de variable, la variable de shell RESPUESTA contiene la línea de datos.
Básicamente, read asigna campos de entrada estándar a las variables especificadas. Si modificamos nuestro script de evaluación de enteros para usar read, podría verse así:
#! / Bin / bash
# read-integer: evalúa el valor de un entero.
echo -n "Por favor ingrese un entero ->" leer int
si [["$ int" = ~ ^ -? [0-9] + $]]; entonces si [$ int -eq 0]; luego
echo "$ int es cero".
más
si [$ int -lt 0]; luego
echo "$ int es negativo".
más
echo "$ int es positivo".
fi
si [$ ((int% 2)) -eq 0]; luego echo "$ int es par".
más
echo "$ int es extraño".
fi
fi más
echo "El valor de entrada no es un número entero". > & 2 salida 1
fi
#! / Bin / bash
# read-integer: evalúa el valor de un entero.
echo -n "Por favor ingrese un entero ->" leer int
si [["$ int" = ~ ^ -? [0-9] + $]]; entonces si [$ int -eq 0]; luego
echo "$ int es cero".
más
si [$ int -lt 0]; luego
echo "$ int es negativo".
más
echo "$ int es positivo".
fi
si [$ ((int% 2)) -eq 0]; luego echo "$ int es par".
más
echo "$ int es extraño".
fi
fi más
echo "El valor de entrada no es un número entero". > & 2 salida 1
fi
Utilizamos echo con el -n opción (que suprime el salto de línea final en la salida) para mostrar un mensaje, y luego use read para ingresar un valor para la variable int. La ejecución de este script da como resultado esto:
[yo @ linuxbox ~] $ lectura-entero
Ingrese un número entero -> 5
5 es positivo.
5 es impar.
[yo @ linuxbox ~] $ lectura-entero
Ingrese un número entero -> 5
5 es positivo.
5 es impar.
read puede asignar entrada a múltiples variables, como se muestra en este script:
#! / Bin / bash
# read-multiple: lee varios valores del teclado echo -n "Ingresa uno o más valores>"
leer var1 var2 var3 var4 var5
echo "var1 = '$ var1'" echo "var2 = '$ var2'" echo "var3 = '$ var3'" echo "var4 = '$ var4'" echo "var5 = '$ var5'"
#! / Bin / bash
# read-multiple: lee varios valores del teclado echo -n "Ingresa uno o más valores>"
leer var1 var2 var3 var4 var5
echo "var1 = '$ var1'" echo "var2 = '$ var2'" echo "var3 = '$ var3'" echo "var4 = '$ var4'" echo "var5 = '$ var5'"
En este script, asignamos y mostramos hasta cinco valores. Date cuenta cómo read se comporta cuando se le dan diferentes números de valores:
[yo @ linuxbox ~] $ lectura-múltiple
Ingrese uno o más valores> a B C D e
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'e'
[yo @ linuxbox ~] $ lectura-múltiple Ingrese uno o más valores> a var1 = 'a'
var2 = '' var3 = '' var4 = '' var5 = ''
[yo @ linuxbox ~] $ lectura-múltiple
Ingrese uno o más valores> abcdefg
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'efg'
[yo @ linuxbox ~] $ lectura-múltiple
Ingrese uno o más valores> a B C D e
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'e'
[yo @ linuxbox ~] $ lectura-múltiple Ingrese uno o más valores> a var1 = 'a'
var2 = '' var3 = '' var4 = '' var5 = ''
[yo @ linuxbox ~] $ lectura-múltiple
Ingrese uno o más valores> abcdefg
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'efg'
If read recibe menos del número esperado, las variables extra están vacías, mientras que una cantidad excesiva de entrada da como resultado que la variable final contenga toda la entrada extra.
Si no se enumeran variables después de read comando, una variable de shell, RESPUESTA, se le asignará toda la entrada:
#! / Bin / bash
# read-single: lee varios valores en la variable predeterminada echo -n "Ingresa uno o más valores>"
read
echo "RESPUESTA = '$ RESPUESTA'"
#! / Bin / bash
# read-single: lee varios valores en la variable predeterminada echo -n "Ingresa uno o más valores>"
read
echo "RESPUESTA = '$ RESPUESTA'"
La ejecución de este script da como resultado esto:
[yo @ linuxbox ~] $ lectura-single
Ingrese uno o más valores> a B C D
RESPUESTA = 'abcd'
[yo @ linuxbox ~] $ lectura-single
Ingrese uno o más valores> a B C D
RESPUESTA = 'abcd'