如何使用 Bash read 命令?


read 命令是 Bash 脚本中最基本命令之一。它用于读取用户或文件中的输入。在本文中,我们将探讨如何有效地使用 read 命令,并提供一些示例及其输出。

read 命令的基本用法

read 命令最基本的用法是从用户那里获取输入。下面是一个简单的示例:

示例

echo "Please enter your name: "
read name
echo "Hello, $name"

运行此脚本时,它会提示您输入您的姓名。输入姓名后,它会向您显示一条问候语。以下是一个输出示例:

输出

Please enter your name: 
John
Hello, John

读取多个输入

read 命令还可以一次读取多个输入。以下是一个示例:

示例

echo "Enter your first and last name: "
read first_name last_name
echo "Hello, $first_name $last_name"

在此脚本中,read 命令读取两个输入,并将它们分别分配给 first_name 和 last_name。以下是一个输出示例:

输出

Enter your first and last name: 
John Doe
Hello, John Doe

在 read 命令中使用提示

您还可以将 -p 选项与 read 命令一起使用,以在读取输入前显示提示。以下是一个示例:

示例

read -p "Enter your name: " name
echo "Hello, $name"

在此脚本中,read 命令显示提示“Enter your name:”,然后读取输入。以下是一个输出示例:

输出

Enter your name: John
Hello, John

从文件读取输入

read 命令还可以用于从文件读取输入。以下是一个示例:

while read line
do
   echo $line
done < file.txt

在此脚本中,read 命令从文件 file.txt 中读取每一行,echo 命令打印每一行。输出将是 file.txt 的内容。

使用超时读取输入

read 命令还可以与超时一起使用。如果用户在指定时间内未提供输入,则脚本将继续执行。以下是一个示例:

read -p "You have 5 seconds to enter your name: " -t 5 name
echo "Hello, $name"

在此脚本中,如果用户在 5 秒内未输入姓名,则脚本将继续执行并打印“Hello, ”,不带姓名。

将输入读取到数组中

-a 选项允许您将输入读取到数组中。以下是一个示例:

示例

echo "Enter three numbers separated by space: "
read -a numbers
echo "The numbers are: ${numbers[0]}, ${numbers[1]}, ${numbers[2]}"

在此脚本中,read 命令读取三个输入并将它们分配给数组 numbers。以下是一个输出示例:

输出

Enter three numbers separated by space: 
10 20 30
The numbers are: 10, 20, 30

不进行反斜杠解释读取输入

-r 选项允许您在不进行反斜杠解释的情况下读取输入。以下是一个示例:

示例

read -r -p "Enter a string: " str
echo "You entered: $str"

在此脚本中,如果您输入包含反斜杠的字符串,则 read 命令将不会解释反斜杠。以下是一个输出示例:

输出

Enter a string: Hello\ World
You entered: Hello\ World

如果不使用 -r 选项,则会解释反斜杠,并且不会打印出来:

示例

read -p "Enter a string: " str
echo "You entered: $str"

输出

Enter a string: Hello\ World
You entered: Hello World

使用分隔符读取输入

-d 选项允许您指定一个分隔符来终止输入。以下是一个示例:

示例

read -d ';' -p "Enter a string (end with ;): " str
echo "You entered: $str"

在此脚本中,read 命令将继续读取输入,直到遇到分号。以下是一个输出示例

输出

Enter a string (end with ;): Hello World;
You entered: Hello World

静默模式

-s 选项允许您在静默模式下读取输入,这在您请求敏感信息(如密码)时非常有用。以下是一个示例:

示例

read -sp "Enter your password: " password
echo -e "
Your password length is: ${#password}"

在此脚本中,read 命令读取密码,但不将其显示在屏幕上。然后打印密码的长度。以下是一个输出示例:

输出

Enter your password: 
Your password length is: 8

注意 - 当您输入密码时,实际密码不会显示。

逐行从文件读取

您还可以使用 read 命令逐行从文件读取并对每一行执行操作。以下是一个示例:

line_number=1
while read -r line
do
   echo "Line $line_number: $line"
   ((line_number++))
done < file.txt

在此脚本中,read 命令从文件 file.txt 中读取每一行,echo 命令打印行号和行。输出将取决于 file.txt 的内容。

使用默认值读取输入

-i 选项允许您指定一个默认值,如果用户未提供输入,则将使用该值。以下是一个示例:

示例

read -p "Enter your name: " -i "John Doe" name
echo "Hello, $name"

在此脚本中,如果用户未输入姓名,则脚本将使用“John Doe”作为默认值。以下是一个输出示例:

输出

Enter your name: 
Hello, John Doe

将输入读取到关联数组中

-A 选项允许您将输入读取到关联数组中。以下是一个示例:

示例

declare -A person
read -p "Enter your name and age: " -a person
echo "Hello, ${person[0]}, you are ${person[1]} years old."

在此脚本中,read 命令读取两个输入并将它们分配给关联数组 person。以下是一个输出示例:

输出

Enter your name and age: 
John 25
Hello, John, you are 25 years old.

这些示例应该可以让您很好地理解如何在 Bash 脚本中使用 read 命令。read 命令非常通用,可以以多种方式使用,使您的脚本更具交互性和用户友好性。

结论

read 命令是 Bash 脚本中的一个通用工具。它可以用于读取用户或文件中的输入,并且它有几个选项允许您自定义其行为。通过了解如何有效地使用 read 命令,您可以使您的 Bash 脚本更具交互性和用户友好性。

更新于: 2023-07-13

4K+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告