xirurensheng_123
2017-09-07 02:28
采纳率: 56.3%
浏览 1.6k
已采纳

关于shell脚本for循环

shell脚本中for循环是怎么处理的例如:
#cat a.txt
1 12
2 22
#cat test.sh
#!/bin/bash

for i in awk '{print $0}'
do
echo $i
done
#./test.sh
1
12
2
22
为什么其输出结果不为:
1 12
2 22
主要问的意思是for,in语句其处理数据时候是通过换行分割还是,有特殊的方法对数据进行分割

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • CH_Qing 2017-09-21 07:32
    已采纳

    你想要那种结果只需要:
    cat a.txt |awk '{print $0}' 就好了

    for 中因为你是使用echo的, 由于echo 是基于行输出,所以就显示4行了

    for 是由空格 或者 回车 等都可以作为其间隔!

    打赏 评论
  • Mygod吴 2017-09-07 06:49

    awk '{print $0}' for整句就是打印与$0匹配项 请问楼主输出结果是什么
    for((i=n;i>=1;i--))
    do
    echo dfdf
    done
    一个for递减的写法很容易理解 我感觉上面的执行结果应该就是1 12
    2 22

    打赏 评论
  • Mygod吴 2017-09-07 06:51

    不好意思那个是我以前弄的测试
    n=10
    for ((i=n;i>=1;i--))
    do
    echo $i
    done这个是经典例程

    打赏 评论
  • Mygod吴 2017-09-07 06:53

    还有for in 语法中in后的不能是变量

    打赏 评论
  • xirurensheng_123 2017-09-07 07:29

    @Mygod吴
    在in后边可以使用变量的
    #cat test.sh
    #!/bin/bash
    str="1 12 13"
    for str_tmp in $str;
    do
    echo $str
    done

    
    
    打赏 评论
  • CH_Qing 2017-09-21 07:18

    for i in awk '{print $0}'

    或者
    str=awk '{print $0}'
    for i in $str

    注意AAA 不是单引号,而是反引号

    打赏 评论

相关推荐 更多相似问题