问题场景: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命令相关推荐

  1. bash shell命令(2)

    在上篇<bash shell命令(1)>中,介绍了几种简单的linux shell命令,今天继续介绍bash shell命令 本文地址:http://www.cnblogs.com/arc ...

  2. Bash : test 命令

    在 Bash 脚本中我们一般会使用 test 命令来进行条件检查.test 命令的返回值为 0 或 1.0 表示 true, 1 表示 false.简单起见,我们可以直接认为 test 的结果为 tr ...

  3. Linux学习一:(Bash 常用命令、vim操作、Linux框架目录)

    一.Bash 常用命令 1.管道(PIPING) 1.1 | 一种管道,其左方是一个命令的 STNOUT,将作为管道右方的另一个命令的 STDIN. 例如:echo 'test text' | wc ...

  4. 添加 Bash 自定义命令

    2019独角兽企业重金招聘Python工程师标准>>> 添加 Bash 自定义命令 作者:JasinYip 时间:December 15, 2014 分类:Linux 今天看一个视频 ...

  5. 第四章:更多的bash shell命令

    第四章:更多的bash shell命令 监测程序 ps (其他ps内容见#1 ) Unix风格的ps命令参数 参数 描述 -A 显示所有进程 -N 显示与指定参数不符的所有进程 -a 显示除控制进程( ...

  6. bash历史命令数_如何使用Bash历史记录命令

    bash历史命令数 Bash历史悠久. 也就是说,它是一个老祖先的外壳(Bourne外壳),但是它还有一个很棒的history命令,它根据其功能数量超过了所有其他外壳历史接口. Bash版本的hist ...

  7. Bash cp 命令详解

    目录 Bash cp 命令详解 cp 命令语法和简单使用 cp 命令的选项说明及示例 按照是否复制文件的内容进行分类 文件属性的控制 创建文件的软硬链接 目标文件或文件夹存在 创建父目录 其它几个选项 ...

  8. bash 基础命令

    bash的基础特性(1):(1) 命令历史history环境变量:HISTSIZE:命令历史记录的条数:HISTFILE:~/.bash_history:HISTFILESIZE:命令历史文件记录历史 ...

  9. shell/bash脚本命令教程

      shell/bash其实就是我们日常在unix系统终端中执行的语句,只是通常我们在命令行中都是单行语句执行的,而有时,我们希望将一些操作命令写到一个文本中,让电脑自动按顺序或是并行地执行这些命令, ...

  10. git bash执行命令响应慢问题

    这两天在学习git的时候碰到git bash执行命令响应特别慢的问题. 以下是我在网上搜到的可能可行的解决方案: 1.如果是git安装在D盘可以尝试一下安装在默认的C盘目录 2.尝试关闭360安全卫士 ...

最新文章

  1. 【334天】每日项目总结系列072(2018.01.05)
  2. Python之路(第九篇)Python文件操作
  3. springboot项目打包部署服务器
  4. cryptogen (2)generate 生成证书再举例
  5. Dockerfile的ONBUILD指令
  6. Java黑皮书课后题第5章:5.5(千克与磅之间的互换)编写一个程序,并排显示下面两个表格
  7. 关于ajax请求后台获取下拉列表用的数据
  8. 2017年闰秒linux_2017年Linux专业人员的4个热门技能
  9. Magento站点优化方案
  10. 国家广电总局:立即停播“椰树牌椰汁”等部分版本广告
  11. cocos js响应过程
  12. 纯VB代码取得硬盘的物理序列号
  13. 常用的HTTP头部字段的基本含义(转)
  14. 深入剖析java迭代器以及C#迭代器!
  15. oracle中那个日期怎么相减_oracle 日期相减
  16. HTML语言中表格怎么弄,html语言中table表格内怎么换行
  17. Nexus5刷Firefox OS 2.0
  18. SQLI DUMB SERIES-1-2
  19. linux怎么恢复删除的文件
  20. JAVA中输出分两栏,老司机搞定Java 设置Word分栏

热门文章

  1. 流畅度优化之一——Vsync的介绍
  2. CSDN中如何将图片缩小
  3. 风格迁移GitHub顶级代码
  4. python webbrowser点击_Python中webbrowser的常用用法
  5. Writing a good research title: Tips Things to avoid
  6. 【3】用户注册账户,如果注册的名字存在,提示已经存在,不能使用该名字注册,如果没有,则显示注册成功
  7. knowledge base 知识库
  8. c语言中的countif函数,从头细说COUNTIF函数
  9. mplayer-php,mplayer ww编译版-简单但极其优秀的播放器
  10. 港联证券|“面值退”增多凸显A股市场化进程良性态势