2 xirurensheng 123 xirurensheng_123 于 2017.09.07 10:28 提问

关于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个回答

changqing1990
changqing1990   2017.09.21 15:32
已采纳

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

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

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

qq_31618659
qq_31618659   2017.09.07 14:49

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

qq_31618659
qq_31618659   2017.09.07 14:51

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

qq_31618659
qq_31618659   2017.09.07 14:53

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

xirurensheng_123
xirurensheng_123 在in后边可以使用变量的
2 个月之前 回复
xirurensheng_123
xirurensheng_123   2017.09.07 15:29

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


changqing1990
changqing1990   2017.09.21 15:18

for i in awk '{print $0}'

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

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

Csdn user default icon
上传中...
上传图片
插入图片