百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> linux下shell中for循环实现读取文件换行
分享文章到:

linux下shell中for循环实现读取文件换行

发布时间:01/15 来源: 浏览: 关键词:
只要学过编程的朋友对于for循环并不陌生了,这里我们要介绍的是在linux中shell中的for循环使用例子,希望对各位有用。


一、问题与需求:

比如有一个aa.list文件内容是:


1    2    3    4   
a    b    c    d

for脚本读取文件时,我想是一行一行的读入,每次循环读取一行,像第一次是1 2 3 4,第二次是a b c d
但是我这样写

for i in "$(< ./aa.list)"
do
    echo $i
    echo 1111
done

得到结果是:

 1
11111
2
11111
3
11111
4
11111
a
11111
b
11111
c
11111
d
11111

怎么解决呢?

二、解决方法

1.可以使用while循环

while read line
do
    echo $line
done < aa.list

但是貌似一定要使用for循环,和问题不符合。

2.通过修改系统的IFS(内部域分隔符),自定义IFS,定义为\n,来实现的

IFS=$"\n"
for i in $(< aa.list)
do
    echo $i
done

注意:一般是不修改IFS,以免系统显示有误,先把IFS值定义给oldifs,运行完程序后,再把默认的IFS值还原。如下

oldifs=$IFS
IFS=$"\n"
for i in $(< aa.list)
do
    echo $i
done
IFS=$oldifs

for循环写法总结

1、 for((i=1;i<=10;i++));do echo $(expr $i \* 4);done
2、在shell中常用的是 for i in $(seq 10)
3、for i in `ls`

4、for i in ${arr[@]}
5、for i in $* ; do
6、for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do
7、for i in f1 f2 f3 ;do
8、for i in *.txt
9、for i in $(ls *.txt)
for in语句与` `和$( )合用,利用` `或$( )的将多行合为一行的缺陷,实际是合为一个字符串数组

============ -_- ==============for num in $(seq 1 100)
10、LIST="rootfs usr data data2"
for d in $LIST; do
用for in语句自动对字符串按空格遍历的特性,对多个目录遍历
11、for i in {1..10}
12、for i in stringchar {1..10}
13、awk 'BEGIN{for(i=1; i<=10; i++) print i}'

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有3人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板