linux中read用法
read在while中的经常用法:
root@ubuntu:/var/lib/logrotate :: # cat /etc/cron.daily/logrotate
#!/bin/sh # Clean non existent log file entries from status file
cd /var/lib/logrotate
test -e status || touch status
head - status > status.clean
sed 's/"//g' status | while read logfile date
do
[ -e "$logfile" ] && echo "\"$logfile\" $date"
done >> status.clean
mv status.clean status test -x /usr/sbin/logrotate || exit
/usr/sbin/logrotate /etc/logrotate.conf
root@ubuntu:/var/lib/logrotate :: #
在上面中
每次调用read命令都会读取文件中的”一行”文本。当文件没有可读的行时,read命令将以非零状态退出。
通过什么样的方法将文件中的数据传给read呢?使用cat命令并通过管道将结果直接传送给包含read命令的while命令
但是当用:
root@ubuntu:/var/lib/logrotate :: # echo "aaa bbb" | read one two
root@ubuntu:/var/lib/logrotate :: # echo $one
one为空,
但是:
root@ubuntu:/var/lib/logrotate :: # echo "aaa bbb" | (read one two;echo -e "$one\n$two")
aaa
bbb
解释:
这里的问题在于read one是有管道产生的进程,而echo $one是外面的进程,两个one不是同一个变量,所以打印出来one没有数据
-a: 将输入的的文本放数组中,(默认已空格或者制表符分割),数组以下标0开始;
root@ubuntu:/home/dyx/linux :: # read -a name
nihao hhaha
root@ubuntu:/home/dyx/linux :: # echo ${name[*]}
nihao hhaha
root@ubuntu:/home/dyx/linux :: # echo ${name[]}
hhaha
-d:指定结束符,当输入中出现指定的结束符时,read命令将认为输入已经结束(默认为换行);
-e:从标准输入读取中时,使用Readline库获取输入(此时用户可以使用退格键、方向箭头进行简单的行编辑操作);
-n:指定读入的字符数n;
-p:将该选项指定的字符串输出到标准错误,并读取输入;
-r:将读取到的字符串字段放到不同的变量中;
root@ubuntu:/home/dyx/linux :: # read -r v1 v2 v3
nifds fds fff
root@ubuntu:/home/dyx/linux :: # echo $v1
nifds
root@ubuntu:/home/dyx/linux :: # IFS="#";read -r v1 v2 v3
fdsfdsf fds #hshfhds#fdsf dsfs
root@ubuntu:/home/dyx/linux :: # echo $v1
fdsfdsf fds
root@ubuntu:/home/dyx/linux :: # echo $v2
hshfhds
最好有在修改IFS之前有,Old_IFS=$IFS, 之后再IFS=$Old_IFS
-s:先锁住屏幕,让后再从标准输入中读入字符;
-t:如果用户在指定的时间内没有输入,就结束读取状态;
-u:从指定的文件描述中读取。
linux中read用法的更多相关文章
- Linux中find用法
Linux中find用法 linux常用命令 find -name april* 在当前目录下查找以april开始的文件 find -name april* fprint file 在当前目录下查找以 ...
- linux中expr用法
名称:expr ### 字串长度 shell>> expr length "this is a test" 14 ### 数字商数 shell>> ...
- linux中nl用法
linux 中nl 命令使用 nl :添加行号打印 -b: 指定行号指定的方式,主要有两种: -b a : 表示不论是否为空行,都同样列出行号 -b t : 如果有空行,则不列出那一行 ...
- linux中sed用法
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: sed ...
- Linux中wget用法
Wget简介:Linux系统中wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器.wget支持HTTP,HTTP ...
- linux中convert用法
转: 强大的convert命令 convert命令可以用来转换图像的格式,支持JPG, BMP, PCX, GIF, PNG, TIFF, XPM和XWD等类型,下面举几个例子: convert ...
- linux中xargs用法
参数代换: xargs xargs 是在做什么的呢?就以字面上的意义来看, x 是加减乘除的乘号,args 则是 arguments (参数) 的意思,所以说,这个玩意儿就是在产生某个命令的参数的意思 ...
- cut,sort,awk,sed,tr,find,wc,uniq在Linux中的用法
cut语法cut [-bn] [file]cut [-c] [file]cut [-df] [file] -b :以字节为单位进行分割.这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志.-c ...
- linux中fuser用法详解
fuser功能 fuser 可以显示出当前哪个程序在使用磁盘上的某个文件.挂载点.甚至网络端口,并给出程序进程的详细信息. fuser显示使用指定文件或者文件系统的进程ID.默认情况下每个文件名后面 ...
随机推荐
- LeetCode——Problem2:Add Two Numbers
这又过了一周了,总感觉刷这个好花时间呀.每次都一两个小时.让我不好安排时间.应该是我太菜了.对,没错,就是这样 1.题目 You are given two non-empty linked list ...
- Pipenv 学习笔记
个人笔记,胡言乱语.并不是什么教学向文章.. 前言 在学习了 Python.Java 后,会发现 Java 有很成熟的项目构建工具,以前是使用 xml 的 Maven,现在又出现了使用 groovy ...
- mac最新系统安装beego出现kiil 9
(内容来自:http://www.oschina.net/question/2626413_2237311) 应该是最新mac OS 12.04的锅. 现在的解决办法是回退bee到以前版本. cd $ ...
- 【bzoj4386】[POI2015]Wycieczki 矩阵乘法
题目描述 给定一张n个点m条边的带权有向图,每条边的边权只可能是1,2,3中的一种.将所有可能的路径按路径长度排序,请输出第k小的路径的长度,注意路径不一定是简单路径,即可以重复走同一个点. 输入 第 ...
- TortoiseGit保存用户名和密码的方法
TortoiseGit在提交或者pull时总会提示你输入用户名密码,非常麻烦,那如何解决呢? 1. 对于TortoiseGit 1.8.1.2及其后的版本,右键选择settings ——> Gi ...
- system权限无法访问外挂SD卡
总结Android应用system权限无法访问SD卡问题 包括android1.6 解决方案http://hi.baidu.com/yunlongchn/item/7d6636d8547317ffca ...
- shell script 的简单介绍
一 什么叫shell script (程序化脚本)? shell script 是利用 shell 的功能所写的一个 “程序”(program),这个程序是使用纯文本文件,将一些 shell 的语法与 ...
- [vuex] vuex requires a Promise polyfill in this browser报错问题的解决办法
在IE下由于不支持promise而导致的问题,需要插件babel-prolyfill cnpm i bablel-prolyfill -D 接着在webpack.config.js当中进行配置 ent ...
- 关于UITextView的限制字数显示,以及emjor表情占用字节处理,复制粘贴字节处理~优化
//限制字数 #define MAX_LIMIT_NUMS 30 1 #pragma mark -- textview的代理事件 - (BOOL)textView:(UITextView *)text ...
- 深入学习MongoDB
NoSQL(Not Only SQL)为什么使用NoSQL 对数据库高并发读写 对海量数据的高效存储与访问 对数据库的高可拓展性和高可用性 NoSQL的弱点 数据库事务一致性需求 数据库的写实时性和读 ...