对于命令行输出的结果,如果要遍历,一般都是用for循环遍历,具体语法为:

for line in `ls` do
dosomething
done

  此时对于ls这类语句的输出结果,在遍历的时候会调用系统默认的分隔符(IFS=” “),对于ls这类命令结果确实是在一行,只需要按照空格进行分割的话,如上语法就OK了。
但是往往,有时候是需要对命令行输出结果按行遍历的,如:

for line in `ls -lrt` do
dosomething
done

  按照ls -lrt遍历文件的属性,此时直接这样就会发现分隔符还是用空格就不行了,这个时候,应该用如下方式:

oldifs="$IFS"
IFS=$'\n'

for line in `ls -lrt` do
dosomething
done

IFS="$oldifs"

  如上意思是先把老的分隔符给保留到中间变量中,然后替换默认分隔符为换行符,再执行遍历,此时for遍历的时候就会按行遍历,最后执行完毕后再把系统分隔符给还原。
---------------------
作者:KLordy
来源:CSDN
原文:https://blog.csdn.net/klordy_123/article/details/81430721
版权声明:本文为博主原创文章,转载请附上博文链接!

Shell 行遍历命令行的输出结果的更多相关文章

  1. mac shell终端编辑命令行快捷键——行首行尾

    mac shell终端编辑命令行快捷键——行首行尾 ctrl+a //移到行首ctrl+e //移到行尾===========linux系统用============alt+a //移到光标所在单词首 ...

  2. Linux Shell 05 位置变量(命令行参数)

    在Linux shell 脚本中可能会用到一些命令行参数,常见如下: $0:脚本名称 $#:执行脚本时传入的参数个数,不包括脚本名称 $@:所有参数 $*:所有参数 $1...$9:第1个参数.... ...

  3. 用 shell 脚本做命令行工具扩展

    问题的提出 公司开发机与远程服务器之间有严格的隔离策略,不能直接使用 ssh 登录,而必需通过跳板机.这样一来,本地与服务器之间的一些文件传输变得非常不便.经过咨询,运维教了我一招: $ nc -l ...

  4. Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2. $# 传递给脚本或函数的参数个数. $* 传 ...

  5. 【Shell脚本学习8】Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运 ...

  6. 【转】shell 教程——07 Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运 ...

  7. linux bash Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    在linux下配置shell参数说明 前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid ...

  8. Linux之Shell脚本计算命令行的所有和

    问题:设计一个Shell脚本:求命令行上所有整数和 Shell代码: 调用add.sh脚本结果:

  9. mac shell终端编辑命令行快捷键——行首,行尾

    Ctrl + d        删除一个字符,相当于通常的Delete键(命令行若无所有字符,则相当于exit:处理多行标准输入时也表示eof) Ctrl + h        退格删除一个字符,相当 ...

随机推荐

  1. .Net Core 3.0 Api json web token 中间件签权验证和 Cors 中间件处理跨域请求

    第一步:在Nuget上安装"Microsoft.AspNet.WebApi.Cors"包,并对api controller使用[EnableCors]特性以及Microsoft.A ...

  2. mac node配置path

    一.查看node安装路径 whitch node 二.打开配置文件 vi ./.bash_profile 三.添加一行PATH(按i进入insert才能编辑) export NODE_HOME=&qu ...

  3. (原)ffmpeg中的writing_filter翻译

    本文的主要目的是梳理,记录自己在学习开发ffmpeg视频滤镜的笔记.参考的主要内容是根据ffmpeg中doc下的writing_filter.txt文件以及ffmpeg的源码. author:liha ...

  4. GWAS+自然选择:62个样本的GWAS分析,没信号,如何巧妙的发文章

    欢迎来到"bio生物信息"的世界 6天前,BMC Genomics 推了一篇文献"Population history and genetic adaptation of ...

  5. c# HTML5 Blob对象实现媒体播放功能

    后台代码: public ActionResult Video()         {             string filePath = @"D:\download\test.mp ...

  6. cube-ui按钮配合toast单例模式应用

    <template> <div> <cube-button icon="cubeic-right" @click="goNext" ...

  7. Jmeter(一) Jmeter基本使用

    1.下载安装 官方网站 https://jmeter.apache.org/download_jmeter.cgi 选择下载即可 2.基本使用 下载解压后,目录如下: 进入到bin目录, 双击jmet ...

  8. 【常用技巧】标准模板库(STL)

    [常用技巧]标准模板库(STL) 在前几个章节中我们已经使用了诸如队列.堆.堆栈.vector 等标准模板库中的模板,切身感受到了它给我们带来的极大便利.在本节中,我们还要介绍两种标准模板——stri ...

  9. Hyperledger Fabric 入门 first-network 搭建

    1.准备环境: 安装git.docker.curl.go [root@test_vonedao_83 fabric]# git --version git version 1.8.3.1 [root@ ...

  10. Redis初识01 (简介、安装、使用)

    一.Reids介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(s ...