0

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

#!/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"我在代码末尾使用它来评估它。

所以问题是我获得的结果总是针对 False 案例"echo $is_there_g" gives me a True value。为什么???

4

1 回答 1

3

您需要运算符周围的空格:

if [ $is_there_g = "False" ]; then

man bashman test了解更多信息。

于 2013-10-16T18:48:20.110 回答