Bash read命令
问题场景:IFS="," read -d ' ' -ra ARG <<< ${ARGS}
概念
read 命令是一个非常重要的bash命令,用于接收标准输入或者其他文件描述符的输入,并且可以和用户进行交互。得到输入后,read命令将数据放入一个标准变量中。该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量$REPLY。read每次调用读取一行。
用法
read [选项] [变量名]
参数 | 说明 |
-a | 指定变量为数组 |
-r | 反斜杠转义不会生效,意味着行末的’\’成为有效的字符,例如使 \n 成为有效字符而不是换行 |
-p | 指定输出提示信息 |
-d | 输入结束符,当输入的内容出现这个字符时,立即结束。一般情况下是以IFS为参数的间隔,但是通过-d自定义 |
-n | 指定输入的字符长度 |
-t | 指定读取值时等待的时间(秒),read命令会一直等待用户输入,时间到自动退出 |
-s | 不显示输入的值,一般用于密码 |
示例:
1、参数示例
# 不带参数,输入值都用空格隔开
[hadoop@hadoop01 ~]$ read ARG
arg1 arg2
[hadoop@hadoop01 ~]$ echo $ARG
arg1 arg2# 定义多个变量,变量和输入值都用空格隔开。顺序赋值,超过自动退出,不足会等待输入
[hadoop@hadoop01 ~]$ read ARG1 ARG2
hello hi
[hadoop@hadoop01 ~]$ echo $ARG1
hello
[hadoop@hadoop01 ~]$ echo $ARG2
hi# -r,反斜杠也会被输出
[hadoop@hadoop01 ~]$ read -r ARG
\arg
[hadoop@hadoop01 ~]$ echo $ARG
\arg# -d,指定的字符作为命令的结束输入,未输入指定的结束符前输入窗口一直存,enter键也无效
[hadoop@hadoop01 ~]$ read -d "-" ARG
arg1
arg2
-[hadoop@hadoop01 ~]$ echo $ARG
arg1 arg2# -a,定义数组
[hadoop@hadoop01 ~]$ read -a ARG
arg1 arg2
[hadoop@hadoop01 ~]$ echo ${ARG[0]} ${ARG[1]}
arg1 arg2# -p,指定输出提示信息
[hadoop@hadoop01 ~]$ read -p "please enter arg:" ARG
please enter arg:arg1
[hadoop@hadoop01 ~]$ echo $ARG
arg1
2、示例脚本
#!/bin/bash
read -t 10 -p "Please enter user:" user
echo "User is $user"read -s -n 6 -t 10 -p "Please enter password:" password
echo "Password is $password"
3、读取文件的首行并赋值给变量ARG
read -r line < file
#输入重定向操作符 < file 表示打开并读取文件file,然后将它作为read命令的标准输入。[hadoop@hadoop01 ~]$ cat file
helle /data/info
hello world
hello hey
[hadoop@hadoop01 ~]$ read -r line < file
[hadoop@hadoop01 ~]$ echo $line
helle /data/info
4、IFS
参考: Bash IFS变量
read命令读入的行被分隔成多个单词,会删除包含在IFS变量中出现的所有字符,但这意味着开头和结尾的空格和制表符都会被删除。如果想保留这些符号,可以通过设置IFS为空来完成:
IFS= read -r line < file
5、读文件
cat查看后,通过管道将结果传递给read的while,read每次调用读取一行。
count=1;
cat file | while read line; doecho "$count: $line"count=$(($count + 1))
done
6、读方法输出的结果
while IFS= read -d '' -r ARG; doCMD+=("$ARG")
done << (build_command "$@")
Bash read命令相关推荐
- bash shell命令(2)
在上篇<bash shell命令(1)>中,介绍了几种简单的linux shell命令,今天继续介绍bash shell命令 本文地址:http://www.cnblogs.com/arc ...
- Bash : test 命令
在 Bash 脚本中我们一般会使用 test 命令来进行条件检查.test 命令的返回值为 0 或 1.0 表示 true, 1 表示 false.简单起见,我们可以直接认为 test 的结果为 tr ...
- Linux学习一:(Bash 常用命令、vim操作、Linux框架目录)
一.Bash 常用命令 1.管道(PIPING) 1.1 | 一种管道,其左方是一个命令的 STNOUT,将作为管道右方的另一个命令的 STDIN. 例如:echo 'test text' | wc ...
- 添加 Bash 自定义命令
2019独角兽企业重金招聘Python工程师标准>>> 添加 Bash 自定义命令 作者:JasinYip 时间:December 15, 2014 分类:Linux 今天看一个视频 ...
- 第四章:更多的bash shell命令
第四章:更多的bash shell命令 监测程序 ps (其他ps内容见#1 ) Unix风格的ps命令参数 参数 描述 -A 显示所有进程 -N 显示与指定参数不符的所有进程 -a 显示除控制进程( ...
- bash历史命令数_如何使用Bash历史记录命令
bash历史命令数 Bash历史悠久. 也就是说,它是一个老祖先的外壳(Bourne外壳),但是它还有一个很棒的history命令,它根据其功能数量超过了所有其他外壳历史接口. Bash版本的hist ...
- Bash cp 命令详解
目录 Bash cp 命令详解 cp 命令语法和简单使用 cp 命令的选项说明及示例 按照是否复制文件的内容进行分类 文件属性的控制 创建文件的软硬链接 目标文件或文件夹存在 创建父目录 其它几个选项 ...
- bash 基础命令
bash的基础特性(1):(1) 命令历史history环境变量:HISTSIZE:命令历史记录的条数:HISTFILE:~/.bash_history:HISTFILESIZE:命令历史文件记录历史 ...
- shell/bash脚本命令教程
shell/bash其实就是我们日常在unix系统终端中执行的语句,只是通常我们在命令行中都是单行语句执行的,而有时,我们希望将一些操作命令写到一个文本中,让电脑自动按顺序或是并行地执行这些命令, ...
- git bash执行命令响应慢问题
这两天在学习git的时候碰到git bash执行命令响应特别慢的问题. 以下是我在网上搜到的可能可行的解决方案: 1.如果是git安装在D盘可以尝试一下安装在默认的C盘目录 2.尝试关闭360安全卫士 ...
最新文章
- 【334天】每日项目总结系列072(2018.01.05)
- Python之路(第九篇)Python文件操作
- springboot项目打包部署服务器
- cryptogen (2)generate 生成证书再举例
- Dockerfile的ONBUILD指令
- Java黑皮书课后题第5章:5.5(千克与磅之间的互换)编写一个程序,并排显示下面两个表格
- 关于ajax请求后台获取下拉列表用的数据
- 2017年闰秒linux_2017年Linux专业人员的4个热门技能
- Magento站点优化方案
- 国家广电总局:立即停播“椰树牌椰汁”等部分版本广告
- cocos js响应过程
- 纯VB代码取得硬盘的物理序列号
- 常用的HTTP头部字段的基本含义(转)
- 深入剖析java迭代器以及C#迭代器!
- oracle中那个日期怎么相减_oracle 日期相减
- HTML语言中表格怎么弄,html语言中table表格内怎么换行
- Nexus5刷Firefox OS 2.0
- SQLI DUMB SERIES-1-2
- linux怎么恢复删除的文件
- JAVA中输出分两栏,老司机搞定Java 设置Word分栏
热门文章
- 流畅度优化之一——Vsync的介绍
- CSDN中如何将图片缩小
- 风格迁移GitHub顶级代码
- python webbrowser点击_Python中webbrowser的常用用法
- Writing a good research title: Tips Things to avoid
- 【3】用户注册账户,如果注册的名字存在,提示已经存在,不能使用该名字注册,如果没有,则显示注册成功
- knowledge base 知识库
- c语言中的countif函数,从头细说COUNTIF函数
- mplayer-php,mplayer ww编译版-简单但极其优秀的播放器
- 港联证券|“面值退”增多凸显A股市场化进程良性态势