遍历变量的每一行并切出一些内容

时间:2016-02-16 14:07:38

标签: bash shell loops variables

我有一个包含多行的txt文件。我正在将内容写入变量。现在我想循环遍历每个变量,并且在同一步骤中我只想切出一行,并将这部分放在一个远程命令中。

该文件是一个名为$output

的简单txt文件

我将其写在变量中:checkuser1=$(<$output)

现在我想循环遍历此变量的每一行并仅从中剪切一个特定部分,并将此部分放入一个单独的远程命令中。

我试过这样的事情:

checkuser1=$(<$output)
for line in $checkuser1 ; do
echo "hallo" >> /tmp/file
done

它给了我

hallo
hallo
hallo....

等等。

我该如何逐行工作?

2 个答案:

答案 0 :(得分:0)

你可以用$ line做一些例子

NEW=$(echo $line|cut -c 2,4)

这将从$ line中提取某些字符(有关详细信息,请参阅man cut)。 然后,您可以将其传递给命令,如下所示:

touch $NEW

如果你想为每一行运行它,那么命令也应该在for循环中。

答案 1 :(得分:0)

Don't read lines with for

根据您在评论中所说的内容,您可以使用while read循环实现您想要的效果:

while read -r username quota junk; do
    # some command using "$quota"
done < "$output"

这将逐行读取名称存储在变量$output中的文件,将变量$username$quota分别设置为第一个和第二个字段中的值。该行的其余部分进入变量$junk

-r开关阻止shell尝试解释文件中的转义序列,这几乎总是你想要的。