linux系统中 read命令

1、linux系统中read命令用于从标准输入中读取数据,进而给变量赋值。

 简单用法:

复制代码
[root@linuxprobe test]# echo $var1  ## 首先查看未赋值前变量,发现是空值

[root@linuxprobe test]# read var1  ## read命令直接跟想要赋值的变量名称,就可以给变量赋值了(直接通过键盘输入)
001
[root@linuxprobe test]# echo $var1  ##查看通过键盘输入001后变量的值,发现变量var1已经是001.
001
复制代码

 

2、直接使用read,不加变量名称,变量赋值给REPLY。

[root@linuxprobe test]# read  ##直接使用read命令,不加变量名称
002
[root@linuxprobe test]# echo $REPLY ## linux默认将变量命名为REPLY
002

 

3、通过-p参数加入提示语

复制代码
[root@linuxprobe test]# read -p "please input an number:" var1 ## -p参数在输入变量值前起到提示的作用
please input an number:100
[root@linuxprobe test]# echo $var1
100
[root@linuxprobe test]# read -p "请输入变量值:" var2 ##同上
请输入变量值:xxxyyyzzz
[root@linuxprobe test]# echo $var2
xxxyyyzzz
复制代码

 

4、通过-t参数限制输入变量值的时间

复制代码
[root@linuxprobe test]# time read -t 3 var1  ## 通过-t设置输入时间上限3秒,如果3秒内未输入,变量为空值

real    0m3.001s
user    0m0.000s
sys     0m0.000s
[root@linuxprobe test]# echo $var1

[root@linuxprobe test]# time read -t 3 var1  ## 3秒内输入变量,可给变量赋值
11

real    0m1.480s
user    0m0.000s
sys     0m0.000s
[root@linuxprobe test]# echo $var1
11
复制代码

 

5、通过-s 选项隐藏输入的变量值,比如在屏幕输入密码

[root@linuxprobe test]# echo $PASSWD

[root@linuxprobe test]# read -s -p "please input your passwd:" PASSWD  ## 通过-s参数,可以在给变量PASSWD赋值的时候不在屏幕上显示
please input your passwd:[root@linuxprobe test]#
[root@linuxprobe test]# echo $PASSWD
123456

 

6、通过-n参数实现限定输入变量的长度

复制代码
[root@linuxprobe test]# read -n 1 var1 ##限定变量长度为1
u[root@linuxprobe test]#
[root@linuxprobe test]# echo $var1
u
[root@linuxprobe test]# read -n 5 var1 ## 限定变量长度为5,可以输入少于和等于5的变量值,但不能大于5
123
[root@linuxprobe test]# echo $var1
123
[root@linuxprobe test]# read -n 5 var1
12345[root@linuxprobe test]#
[root@linuxprobe test]# echo $var1
12345
复制代码

 

7、使用-r参数限制为原始字符串

复制代码
[root@linuxprobe test]# read var1
abc\defg\hi
[root@linuxprobe test]# echo $var1
abcdefghi
[root@linuxprobe test]# read -r var1  ## 加-r参数实现不对\进行转义
abc\defg\hi
[root@linuxprobe test]# echo $var1
abc\defg\hi
复制代码

 

8、从文件中读取变量值

复制代码
[root@linuxprobe test]# seq -f test%g 5 > a.txt ##测试文件
[root@linuxprobe test]# cat a.txt
test1
test2
test3
test4
test5
[root@linuxprobe test]# ls
a.txt
[root@linuxprobe test]# cat a.txt | while read i;do mkdir $i;done  ##读取a.txt的每一行作为变量,以变量名创建目录
[root@linuxprobe test]# ls
a.txt  test1  test2  test3  test4  test5
复制代码

 

posted @   小鲨鱼2018  阅读(1981)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示