首页 > 解决方案 > 将 grep 与 for 循环一起使用时不必要的换行符

问题描述

我有这样的设置:

    #read a list of files
    tr -d \\015 < sample.txt | while IFS=, read -r NAME
        do
            #grep for lines and do stuff
            for VAR in $(grep '.*: {$' $NAME)
                do
                do some stuff
                done
        done

问题是这样的。它不起作用,因为 $(grep '.*: {$' $NAME) 中的 for VAR 在其结果中添加了不必要的空格和换行符。

如果我回显 $VAR 我会得到以下信息:

    blahblahblah: 
    {

现在考虑这段代码:

    #read a list of files
    tr -d \\015 < sample.txt | while IFS=, read -r NAME
        do
            VAR=$(grep '.*: {$' $NAME)
            echo $VAR
        done

如果我在这里回显 $VAR,我会得到:

    blahblahblah: {

为什么我在第一个示例中得到额外的换行符?

标签: bashfor-loopgrepecho

解决方案


推荐阅读