Bash脚本读取txt文件,执行while循环并写入输出

时间:2019-11-20 23:12:13

标签: linux bash while-loop

我对bash脚本还很陌生,我编写了以下脚本来读取文本文件,使用if语句运行while循环,然后将所需的数据写入另一个文本文件。

#!/bin/bash
#
#
#
variable1=0
variable2=0
variable3=0
variable4=0
cat input.txt | while read Column1 Column2 Column3

do
    if ["$Column1" = variable2]; then
        if ["$Column2" > variable3 && "$Column2" < variable4]; then
            if ["$Column3" > variable4]; then
                variable4="$Column3"
                continue
            fi
        else
            echo variable1 variable2 variable3 variable4
            variable1++
            variable3="$Column2"
            variable4="$Column3"
        fi
    else
        echo variable1 variable2 variable3 variable4
        variable1++
        variable2="$Column1"
        variable3="$Column2"
        variable4="$Column3"
    fi

done>output.txt

但是,当我运行脚本时,出现以下错误消息:

./code.sh: line 31: syntax error near unexpected token `done'
'/code.sh: line 31: `done>output.txt

如果有人可以帮助我,我将非常感谢!

1 个答案:

答案 0 :(得分:0)

我不知道您想做什么,但是在bash中有很多事情可能会失败,我发布了经过测试的版本。

this works for me

p.s。我被批评该代码是图片:))在这里,您可以将其用于复制粘贴

#!/bin/bash
let variable1=0
let variable2=0
let variable3=0
let variable4=0
cat input.txt | while read Column1 Column2 Column3


do
    if [ "x$Column1" == "x$variable2" ]; then
        if [ "x$Column2" -gt "x$variable3" ]  &&  [ "x$Column2" -lt "x$variable4" ]; then
            if [ "x$Column3" -gt "x$variable4" ]; then
                let variable4=$Column3
                continue
            fi
        else
            echo $variable1 $variable2 $variable3 $variable4
            let "variable1 += 1"
            let variable3=$Column2
            let variable4=$Column3
        fi
    else
        echo $variable1 $variable2 $variable3 $variable4
        let "variable1 += 1"
        let variable2=$Column1
        let variable3=$Column2
        let variable4=$Column3
    fi

done > output.txt