读取cat文件传递给命令不能正常工作

时间:2014-04-11 20:55:35

标签: linux bash for-loop cat

我有一个包含进程列表的文件是input1文件

proc1
proc2 b
proc3 a

我使用以下命令读取文件并将文件内容传递给变量然后执行某些操作

for in in cat `input1`;do 
echo $i
done

它适用于像proc1这样的条目。但问题是,它只将proc2分配给变量$ i,并且还将b分配给$ i等等。如何将整个proc2 b传递给变量$ i,其间的空间为???? < / p>

谢谢

1 个答案:

答案 0 :(得分:0)

$ while IFS= read i; do echo $i; done <input1
proc1
proc2 b
proc3 a


$ IFS=$'\n'; for i in $(cat input1); do echo $i; done
proc1
proc2 b
proc3 a

更新:根据评论,您似乎希望将文件名从外部循环传递到内部循环,该循环将从文件中读取。在那种情况下:

for fname in input1 input2
do
    while IFS= read i
    do 
        echo $i
    done <"$fname"
done

或者,如果正在从名为filelist的文件中读取文件名:

while IFS= read fname
do 
    while IFS= read i
    do
        echo 1=$i
    done <"$fname"
done <filelist