English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Comando read de Linux

Linux 命令大全

El comando read de Linux se utiliza para leer valores de la entrada estándar.

El comando read interno se utiliza para leer una línea de datos desde la entrada estándar. Este comando se puede usar para leer la entrada del teclado, y cuando se usa redirección, se puede leer una línea de un archivo.

Sintaxis

read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]

Descripción de los parámetros:

  • -a Sigue con una variable, que se considera un array, y se le asigna un valor, por defecto se usa el espacio como separador.
  • -d Sigue con un marcador, realmente solo el primer carácter después de él es útil, como marcador de finalización.
  • -p Sigue con el mensaje de sugerencia, que se imprime antes de la entrada.
  • -e Al ingresar, se puede usar la función de autocompletado de comandos.
  • -n Sigue con un número, define la longitud del texto de entrada, muy práctico.
  • -r Oculta, si no hay esta opción, se usa como carácter de escape, de lo contrario, es un carácter normal.
  • -s Modo silencioso, no muestra los caracteres en la pantalla al ingresar, por ejemplo, al ingresar la contraseña de login.
  • -t Seguido de segundos, define el tiempo de espera para la entrada de caracteres.
  • -u Seguido de fd, lee desde el descriptor de archivo, que puede ser ejecutado por exec recién abierto.

Ejemplo en línea

1、Lectura simple

#!/bin/bash
#Aquí se cambiará de línea por defecto  
echo "Ingrese el nombre del sitio web: "  
#Leer la entrada del teclado  
read website  
echo "El nombre del sitio web que ingresaste es $website"  
exit 0  #salir

El resultado de la prueba es:

Ingrese el nombre del sitio web: 
es.oldtoolbag.com
El nombre del sitio web que ingresaste es es.oldtoolbag.com

2,-El parámetro p permite especificar directamente un mensaje de sugerencia en la línea de comando de read.

#!/bin/bash
read -p "Ingrese el nombre del sitio web: " website
echo "El nombre del sitio web que ingresaste es $website" 
exit 0

El resultado de la prueba es:

Ingrese el nombre del sitio web:es.oldtoolbag.com
El nombre del sitio web que ingresaste es es.oldtoolbag.com

3,-El parámetro t especifica el número de segundos que espera el comando read. Al alcanzar el tiempo de espera, el comando read devuelve un estado de salida no cero.

#!/bin/bash
if read -t 5 -p "Ingrese el nombre del sitio web: " website
then
    echo "El nombre del sitio web que ingresaste es $website"
else
    echo "\nLo siento, se ha excedido el tiempo de entrada."
fi
exit 0

El programa de ejecución no ingresa, espera 5 Después de X segundos:

Ingrese el nombre del sitio web:
Lo siento, se ha excedido el tiempo de entrada

4、Además de contar el tiempo de entrada, también se puede usar -n Configuración de parámetros read El comando cuenta los caracteres ingresados. Al alcanzar el número de caracteres preestablecido, sale automáticamente y asigna los datos ingresados a la variable.

#!/bin/bash
read -n1 -p "¿Desea continuar [Y/N]?" answer
case $answer in
Y | y)
      echo "fine ,continue";;
N | n)
      echo "ok,good bye";;
*)
     echo "error choice";;
esac
exit 0

Este ejemplo utiliza-n Opción, seguida de un valor 1,indicando que el comando read solo acepta un carácter y sale. Simplemente presione un carácter para responder, el comando read acepta inmediatamente la entrada y la transmite a la variable, sin necesidad de presionar Enter.

Sólo acepta 2 Un solo ingreso y sale:

#!/bin/bash
read -n2 -p "Por favor, ingrese dos caracteres aleatorios: " any
echo "\nLos dos caracteres que ingresaste son: $any"
exit 0

Ingrese dos caracteres para ejecutar el programa:

Por favor, ingrese dos caracteres aleatorios: 12
Los dos caracteres que ingresaste son:12

5,-s La opción puede hacer que read Los datos ingresados en el comando no se muestran en la terminal de comandos(de hecho, los datos se muestran, solo que read El comando establece el color del texto en el color de fondo)。Este es el comando comúnmente utilizado para ingresar la contraseña.

#!/bin/bash
read  -s  -p "Por favor, ingrese su contraseña: " pass
echo "\nLa contraseña ingresada es $pass"
exit 0

执行程序输入密码后是不显示的:

请输入您的密码:
您输入的密码是 w3codebox

6.读取文件

每次调用 read 命令都会读取文件中的 "一行" 文本。当文件没有可读的行时,read 命令将以非零状态退出。

通过什么样的方法将文件中的数据传给 read 呢?使用 cat 命令并通过管道将结果直接传送给包含 read 命令的 while 命令。

测试文件 test.txt 内容如下:

123
456
w3codebox

测试代码:

#!/bin/bash
count=1    # 赋值语句,不加空格
cat test.txt | while read line      # cat 命令的输出作为read命令的输入,read读到>的值放在line中
do
   echo "Line $count:$line"
   count=$[ $count + 1 ]          # 注意中括号中的空格。
done
echo "finish"
exit 0

执行结果为:

行 1:123
行 2:456
行 3:w3codebox
finish

使用 -e 参数,以下示例输入字符 a 后按下 Tab 键就会输出相关的文件名(该目录存在的):

$ read -e -p "输入文件名:" str 
输入文件名:a
a.out    a.py     a.pyc    abc.txt  
输入文件名:a

Linux 命令大全