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

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

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

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

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

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

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

xirurensheng_123
xirurensheng_123 在in后边可以使用变量的
大约 2 年之前 回复

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


for i in awk '{print $0}'

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!