代码忽略bash中的if / else语句

时间:2013-10-16 18:46:59

标签: bash shell

我不知道你是否可以帮助我......我对以下代码有疑问:

#!/bin/bash

if [ $# = 0 ]; then
    awk '{for (x=5; x<=NF; x++) {printf "%s ", $x } printf "\n" }' affy.txt
else
    columns=""
    for i in $@; do
        if [ $i = "-g" ]; then
            word=$2
            is_there_g="True"
            break
        else
            is_there_g="False"
        fi
        columns+="$i,"
        shift
    done
    columns=${columns%,}
    if [ $is_there_g="False" ]; then
        cat affy.txt | cut -d" " -f$columns 
    else
        grep $word affy.txt | cut -d" " -f$columns
    fi
fi

echo $is_there_g

所以,获得我想要的结果是个问题。这是关于最后的If / else写的。

$is_there_g="False"时,我想这样做: "cat affy.txt | cut -d" " -f$columns"

如果是True,那么: "grep $word affy.txt | cut -d" " -f$columns"

我在代码末尾使用"echo $is_there_g"对其进行评估。

所以问题在于,即使"echo $is_there_g" gives me a True value,我获得的结果也始终是假的。为什么???

1 个答案:

答案 0 :(得分:3)

您需要在运营商周围留出空间:

if [ $is_there_g = "False" ]; then

man bashman test了解详情。