Mandato read

Finalidad

Lee una línea de la entrada estándar.

Sintaxis

leer [-p] [ -r ] [-s][- u [ n ]][ VariableName?Solicitar]

[VariableName ... ]

Descripción

El mandato read lee una línea de la entrada estándar y asigna los valores de cada campo de la línea de entrada a una variable de shell utilizando los caracteres de la variable IFS (Separador de campo interno) como separadores. El parámetro VariableName especifica el nombre de una variable de shell que toma el valor de un campo de la línea de entrada. A la primera variable de shell especificada por el parámetro VariableName se le asigna el valor del primer campo, a la segunda variable de shell especificada por el parámetro VariableName se le asigna el valor del segundo campo, y así sucesivamente, hasta que se alcance el último campo. Si la línea de entrada estándar tiene más campos de los que hay variables de shell correspondientes especificadas por el parámetro VariableName , a la última variable de shell especificada se le da el valor de todos los campos restantes. Si hay menos campos que las variables de shell, las variables de shell restantes se establecen en series vacías.

Nota: Si omite el parámetro VariableName , se utiliza la variable REPLY como nombre de variable predeterminado.

El establecimiento de variables de shell mediante el mandato read afecta al entorno de ejecución de shell actual.

Distintivos

Elemento Descripción
-p Lee la entrada de la salida de un proceso ejecutado por el shell Korn utilizando | & (pipe, ampersand).
Nota: Un carácter de fin de archivo con el distintivo -p provoca la limpieza de este proceso para que se pueda generar otro.
-r Especifica que el mandato de lectura trata un carácter \ (barra inclinada invertida) como parte de la línea de entrada, no como un carácter de control.
-s Guarda la entrada como un mandato en el archivo histórico del shell Korn.
- u [ n ] Lee la entrada del número de descriptor de archivo de un dígito, n. El descriptor de archivo se puede abrir con el mandato incorporado exec de ksh. El valor predeterminado de n es 0, que hace referencia al teclado. Un valor de 2 hace referencia a un error estándar.

Parámetros

Elemento Descripción
VariableName?Solicitud especifica el nombre de una variable y una solicitud que se va a utilizar. Cuando el shell Korn es interactivo, escribirá la solicitud en el error estándar y, a continuación, realizará la entrada. Si la Solicitud contiene más de una palabra, debe encerrarla entre comillas simples o dobles.
VariableName... especifica uno o más nombres de variable separados por espacios en blanco.

Estado de salida

Este mandato devuelve los siguientes valores de salida:

Elemento Descripción
0 Finalización satisfactoria.
>0 Se ha detectado un carácter de fin de archivo o se ha producido un error.

Ejemplos

  1. El script siguiente imprime un archivo con el primer campo de cada línea movido al final de la línea:
    while read -r xx yy
    do
             print printf "%s %s/n" $yy $xx
    done < InputFile
  2. Para leer una línea y dividirla en campos, y utilizar Escriba: como solicitud, escriba:
    read word1?"Please enter:  " word2
    El sistema muestra:
    Please enter:
    You enter:
    hello world
    El valor de la variable word1 debe tener hola y word2 debe tener mundo.
  3. Para crear un coproceso, utilice imprimir -p para grabar en el coproceso y utilice leer -p para leer la entrada del coproceso, escriba:
    (read; print "hello $REPLY") 
    print -p "world"
    read -p line
    El valor de la variable de línea debe tener hello world.
  4. Para guardar una copia de la línea de entrada como un mandato en el archivo histórico, escriba:
    read -s line < input_file
    Si input_file contiene echo hello world, echo hello world se guardará como un mandato en el archivo histórico.