本页内容
- Linux read 命令示例
- read 命令的命令行选项
Bash 中的 read 命令从标准输入读取一行,并将其拆分为多个字段。
Linux read 命令示例
Linux 中的 read 命令是一个内置命令,用于 shell 脚本和命令行中,从标准输入(stdin)读取一行输入并将其赋值给一个变量。以下是一些使用 read 命令的示例:
基本用法:
read varname echo "You entered: $varname "
该脚本会等待用户输入一些文本,随后将其存入变量 varname。当用户按下回车键后,脚本会显示所输入的文本。
读取多个值:
echo
"Enter two values:"
read
var1 var2
echo
"You entered:
$var1
and
$var2
"
这样可以让用户输入两个独立的值,它们会被分别存入 var1 和 var2。两个值之间应以空格分隔。
静默输入(适用于密码):
read -s -p "Enter your password: " password echo echo "Password entered."
-s 选项使 read 进入静默模式,即不会将输入回显到终端。这对于密码等敏感信息非常有用。-p 选项允许你显示一条提示符。
读取包含空格的整行:
IFS= read -r line echo "You entered: $line "
通过将 IFS(内部字段分隔符)设置为空值,并使用 -r 选项(防止反斜杠转义被解释),整行输入(包括空格)都会被读入变量 line 中。
设置超时:
read -t 5 -p "Enter your name (you have 5 seconds): " name echo "Hello, $name "
-t 选项用于设置超时。在本例中,read 会等待 5 秒以让用户输入其姓名。
从文件读取:
while IFS= read -r line do echo "Line: $line " done < filename.txt
该脚本会逐行读取名为 filename.txt 的文件中的内容。
read 命令的命令行选项
以下是它的一些常用选项:
- -r:该选项阻止反斜杠充当转义字符。使用 -r 时,反斜杠会被当作字面字符处理。通常建议使用该选项,以确保输入被准确读取,避免对反斜杠转义字符产生任何非预期的解释。
- -p:该选项允许你指定一条显示给用户的提示符。当你与用户交互并等待其输入时,它常被使用。例如,read -p "Enter your name: " name 会显示“Enter your name: ”,然后将用户的输入存入变量 name。
- -a array:该选项从标准输入读取内容,并将读取到的单词赋给一个索引数组。这在将一行输入读入数组时很有用,此时每个单词都会成为数组的一个元素。
- -d delim:该选项指定一个分隔符字符来终止输入行,而不是使用换行符。例如,read -d ":" var 会一直读取输入,直到遇到冒号字符为止。
- -n num:该选项读取 num 个字符,而非完整的一行。当你需要将输入限制为特定数量的字符时,它很有用。
- -s:静默模式。使用 -s 时,用户输入的内容不会显示在屏幕上。它通常用于密码等敏感输入。
- -t timeout:以秒为单位指定超时时间。如果用户在规定秒数内没有提供输入,read 命令将终止。对于不希望无限期等待用户输入的脚本,这很有用。
- -u fd:该选项让 read 从文件描述符 fd 读取输入,而不是从标准输入读取。这是一个高级特性,适用于需要在脚本中操作文件描述符的场景。
- -N num:与 -n 类似,但它读取的是 num 个字符,而非字节。在多字节字符的场景下尤其重要。
- -E:与 -p 配合使用时,该选项会禁用提示符字符串中对反斜杠转义和换行续接的解释。
- -i text:该选项为 read 提供初始文本。在提供可让用户编辑的默认值时特别有用。
-r:该选项阻止反斜杠充当转义字符。使用 -r 时,反斜杠会被当作字面字符处理。通常建议使用该选项,以确保输入被准确读取,避免对反斜杠转义字符产生任何非预期的解释。
-p:该选项允许你指定一条显示给用户的提示符。当你与用户交互并等待其输入时,它常被使用。例如,read -p "Enter your name: " name 会显示“Enter your name: ”,然后将用户的输入存入变量 name。
-a array:该选项从标准输入读取内容,并将读取到的单词赋给一个索引数组。这在将一行输入读入数组时很有用,此时每个单词都会成为数组的一个元素。
-d delim:该选项指定一个分隔符字符来终止输入行,而不是使用换行符。例如,read -d ":" var 会一直读取输入,直到遇到冒号字符为止。
-n num:该选项读取 num 个字符,而非完整的一行。当你需要将输入限制为特定数量的字符时,它很有用。
-s:静默模式。使用 -s 时,用户输入的内容不会显示在屏幕上。它通常用于密码等敏感输入。
-t timeout:以秒为单位指定超时时间。如果用户在规定秒数内没有提供输入,read 命令将终止。对于不希望无限期等待用户输入的脚本,这很有用。
-u fd:该选项让 read 从文件描述符 fd 读取输入,而不是从标准输入读取。这是一个高级特性,适用于需要在脚本中操作文件描述符的场景。
-N num:与 -n 类似,但它读取的是 num 个字符,而非字节。在多字节字符的场景下尤其重要。
-E:与 -p 配合使用时,该选项会禁用提示符字符串中对反斜杠转义和换行续接的解释。
-i text:该选项为 read 提供初始文本。在提供可让用户编辑的默认值时特别有用。
read 命令是 Bash 脚本中用于处理用户输入和解析文本的强力工具。你可以根据需要组合这些选项,以满足你的具体需求。