【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》中所说:“编程是理解的艺术。”

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

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

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

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

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

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

目录
相关文章
|
28天前
|
人工智能 Shell iOS开发
AI Shell:在命令行里“对话” AI ,微软推出将 AI 助手引入命令行的 CLI 工具,打造对话式交互命令行
AI Shell 是一款强大的 CLI 工具,将人工智能直接集成到命令行中,帮助用户提高生产力。AI Shell 支持多种 AI 模型和助手,通过多代理框架提供丰富的功能和灵活的使用模式。
92 7
|
1月前
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
41 1
|
2月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
78 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
Shell
Shell编程(下)
Shell编程(下)
110 1
|
2月前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
47 1
|
2月前
|
Shell 知识图谱
Shell printf 命令
10月更文挑战第3天
25 1
|
2月前
|
Shell Linux 开发工具
|
2月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
82 12
|
2月前
|
Unix Shell Linux
常见的shell命令
shell常用命令
57 11