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

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

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

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

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

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

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


阅读我的CSDN主页,解锁更多精彩内容:泡沫的CSDN主页
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_21438461/article/details/132930823