【Shell 编程指南】Shell read命令 (从标准输入读取数值)

简介: 【Shell 编程指南】Shell read命令 (从标准输入读取数值)

Shell read命令详解

Shell的read命令用于从标准输入或其他文件描述符中读取文本。这是一个非常有用的命令,尤其是在Shell脚本中获取用户输入时。在本文中,我们将详细介绍read命令的各种选项和用法,并通过实际的代码示例来加深理解。

read命令的基本格式

read [-options] [variables]

选项解析

在使用read命令时,可以通过各种选项来定制其行为。下表总结了这些选项及其用途。

选项 说明 示例
-a array 把读取的数据赋值给数组 array,从下标 0 开始。 read -a my_array
-d delimiter 用字符串 delimiter 指定读取结束的位置,而不是一个换行符(读取到的数据不包括 delimiter)。 read -d ":"
-e 在获取用户输入的时候,对功能键进行编码转换,不会直接显式功能键对应的字符。 read -e
-n num 读取 num 个字符,而不是整行字符。 read -n 5
-p prompt 显示提示信息,提示内容为 prompt。输出不会加换行符。 read -p "Enter your name: "
-r 原样读取(Raw mode),不把反斜杠字符解释为转义字符。 read -r
-s 静默模式(Silent mode),不会在屏幕上显示输入的字符。当输入密码和其它确认信息的时候,这是很有必要的。 read -s
-t seconds 设置超时时间,单位为秒。如果用户没有在指定时间内输入完成,那么 read 将会返回一个非 0 的退出状态,表示读取失败。 read -t 10
-u fd 使用文件描述符 fd 作为输入源,而不是标准输入,类似于重定向。 read -u 3

实际应用示例

测试 read -a

#!/bin/bash
read -a buf
echo ${buf[0]}
echo ${buf[1]}
echo ${buf[3]}
echo ${buf[*]}

这个脚本使用read -a选项来读取用户输入,并将其存储在一个名为buf的数组中。然后,它打印出数组的各个元素。

测试 read -p

#!/bin/bash
#输入用户名,密码,已经验证密码的脚本
#read -n 1 -p "Enter a char > " char
#printf "\n"  #换行
#echo $char
read -p "please enter user name:" usr_name
echo -n
echo "The username you entered:$usr_name"
read  -n 6 -p "Please enter password(6 characters):" password
printf "\n"
echo "Enter the password successfully"
read -n 6 -sp "Please enter the password again(6 characters):" verification
printf "\n"
echo "Password entered for the first time:$password"
echo "Password entered for the second time $verification"
if [[ $verification == $password ]]
then
     echo "Password verification succeeded"
else 
    echo "Password verification failed"
fi

这个脚本使用read -p选项来显示一个提示信息,然后读取用户输入的用户名和密码。它还使用了-n-s选项来限制密码长度并隐藏输入。

前言

在编程和系统管理中,与用户的交互通常是不可或缺的一环。read命令提供了一种简单而高效的方式来实现这一目标。通过掌握其各种选项和参数,你不仅可以编写出更加人性化的脚本,还能在需要输入数据时,让脚本运行得更加顺畅。

正如Bjarne Stroustrup在《The C++ Programming Language》中所说:“C++是一种设计来使人们更自由的语言。”同样,read命令也是如此,它给了我们更多的自由来控制和管理用户输入,使我们能够更加灵活地编写脚本。

希望本文能帮助你深入理解read命令的各种用法和特性。

结语:编程、思考与持续成长

在编程的世界里,每一行代码都是一种表达,每一个问题都是一个挑战。正如我们在本文中探讨的 Bash 脚本,简单的代码背后往往蕴含着丰富的思考和解决问题的智慧。编程不仅是一种技术活动,更是一种思维的锻炼和人类创造力的体现。

正如Bjarne Stroustrup在《The C++ Programming Language》中所说:“编程是理解的艺术。”

从编程的角度看,每一个错误、每一个挑战都是一次成长的机会。这些“错误”实际上是我们与计算机、与问题、甚至与自己内心的一次深度对话。它们不仅仅是困扰,更是一种启示,引导我们去优化思维,去完善解决方案。

我诚挚地邀请大家加入这场关于编程和思考的旅程。无论你是编程的新手,还是经验丰富的开发者,都请不吝赐教,分享你的见解和经验。你的每一次互动,无论是点赞、评论、分享还是关注,都是对我持续创作和分享的最大鼓励和支持。

感谢你花时间阅读这篇文章,如果你觉得有价值,请不要忘记收藏和分享。也欢迎你对博客内容提出宝贵的建议和问题,因为每一个问题都可能是下一篇文章的起点。

让我们一起,在编程的道路上,持续学习,持续成长。

“代码如诗,智慧如光。” —— 未知

感谢阅读,期待与你再次相遇在编程和思考的交汇点。

目录
相关文章
|
1月前
|
Shell Linux 程序员
【Linux】Shell 命令以及运行原理
【Linux】Shell 命令以及运行原理
|
6天前
|
存储 Shell 数据安全/隐私保护
Shell 内建命令:Shell 的内在魔力
Shell 内建命令比外部命令执行快,不需额外进程。`type` 命令用来检查命令类型。内建命令如 `cd`、`alias` 和 `echo` 直接在 Shell 中执行,不涉及磁盘 I/O。`type` 示例展示了 `cd` 是内建的,`ifconfig` 是外部的。`bash` 包含多种内建命令,如 `cd` 用于切换目录,`alias` 定义别名,`read` 从输入读取数据。`echo` 默认加换行,`echo -n` 可避免。
18 5
|
5天前
|
Shell 虚拟化
分布式系统详解--框架(Zookeeper-基本shell命令)
分布式系统详解--框架(Zookeeper-基本shell命令)
11 1
|
8天前
|
安全 Shell Linux
探索Linux命令chsh:更改用户的默认shell
`chsh`是Linux命令,用于更改用户的默认登录shell。它涉及用户环境配置和系统安全,允许用户选择更适合自己的shell以提升效率。命令有交互式选项和参数如`-s`来指定新shell。在使用时要注意新shell的可执行性、权限问题及选择合适的shell。例如,要更改为bash,用户可运行`chsh`后按提示操作,而root用户能用`sudo chsh -s /bin/zsh john`为用户`john`设定zsh。在更改前,确认shell路径、权限,并了解不同shell的特点。
|
5天前
|
分布式计算 Hadoop Shell
分布式系统详解--框架(Hadoop-基本shell命令)
分布式系统详解--框架(Hadoop-基本shell命令)
8 0
|
8天前
|
Shell Perl
7操作系统基础-Shell编程
7操作系统基础-Shell编程
6 0
|
9天前
|
Shell
Shell [[]] 命令:条件判断的升级版
`[[ ]]` 是 Bash 中增强型的条件判断命令,提供比 `[ ]` 更多的灵活性,如无需引号包裹变量、直接字符串比较及正则支持。例如: ```markdown - 不加引号比较:`[[ -z $str1 ]]` - 逻辑运算:`[[ -z $str1 ]] || [[ -z $str2 ]]` - 正则匹配:`[[ $phone =~ ^1[0-9]{10}$ ]]` ``` 它不支持 `-a` 和 `-o`,但能用 `&&` 和 `||` 进行逻辑操作。用于复杂字符串验证和文件处理时非常有用。
15 0
|
9天前
|
Shell Windows
Shell test [] 命令:条件判断的艺术
`test` 命令在Shell脚本中用于条件检测,涉及数值、字符串和文件比较。例如,`test $a -eq $b` 检查两个数是否相等;`-e` 检查文件是否存在;`-w` 检查文件是否可写。数值比较不支持 `>=` 和 `<=`,需用 `-ge` 和 `-le`。字符串比较时注意空值,使用双引号。逻辑运算包括 `-a`(与)、`-o`(或)和 `!`(非)。文件类型和权限检测也是`test`的重要用途。
10 0
|
1月前
|
监控 关系型数据库 Shell
Shell脚本入门:从基础到实践,轻松掌握Shell编程
Shell脚本入门:从基础到实践,轻松掌握Shell编程
|
1月前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)