【问题标题】:reading cat file passing to command not working properly [duplicate]读取传递给命令的cat文件无法正常工作[重复]
【发布时间】:2014-05-26 04:31:13
【问题描述】:

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

proc1
proc2 b
proc3 a

我使用以下命令读取文件并将文件内容传递给变量,然后做一些事情

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

它适用于像 proc1 这样的条目。但问题是它仅将 proc2 分配给变量 $i 并将 b 分配给 $i 等等等。我怎样才能将整个 proc2 b 传递给变量 $i ,中间有空格????

谢谢

【问题讨论】:

标签: linux bash for-loop cat


【解决方案1】:
$ 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

更新: 从 cmets 看来,您希望将文件名从外部循环传递到将从文件中读取的内部循环。在这种情况下:

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

【讨论】:

  • 嗨 John .. 我实际上正在阅读两个文件.. 所以我有一个 for I 循环和一个 for I 循环.. 所以我将文件的名称从一个 for lopp 传递到下一个 .. 不知道如何在我的脚本中使用这个命令
  • 我也将整个东西捆绑在一个子外壳中(
  • 简而言之,我不能像你所说的那样使用
  • @theuniverseisflat 查看更新。此外,为了让您的问题保持活力,您应该更新问题以讨论循环中的循环,以便任何人都清楚您的问题与声称的重复项不同。
  • @theuniverseisflat 另外,请说明子shell 的使用位置。
猜你喜欢
  • 1970-01-01
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 2021-02-16
  • 1970-01-01
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多