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