繁体   English   中英

为什么我的脚本额外增加0

[英]Why do I get an extra 0 on my script

我不知道为什么我运行脚本时会得到额外的0

这是我的脚本:我运行一个SQL查询并将其保存为valor.txt文件。

这是我的数组: array=(50 60 70)

Valor.txt

 count | trn_hst_id | trn_msg_host
-------+------------+--------------
    11 |         50 | Aprobada
     2 |         70 | Aprobada
(2 rows)

码:

function service_status {
    cd
    cat valor.txt | grep $1 | gawk '{print $1}' FS="|" | sed "s/ //g"
    if [ $? -eq 0 ]; then
        echo -n 0
        else
        echo -n $1
    fi
}

        echo "<prtg>"

# <-- Start
        for i in "${array[@]}"
        do

        echo -n "   <result>
       <channel>$i</channel>
       <value>"
        service_status $i
        echo "</value>
       </result>"
       done
# End -->
       echo "</prtg>"
       exit

这是我的输出。

<prtg>
   <result>
       <channel>50</channel>
       <value>11
0</value>
       </result>
   <result>
       <channel>60</channel>
       <value>0</value>
       </result>
   <result>
       <channel>70</channel>
       <value>2
0</value>
       </result>
</prtg>

为什么我在这里得到0 -

       <value>2
0</value>

如果我正确理解您的评论,则需要打印计数。 如果存在于valor.txt ,则为count列的值;如果array中的valor.txt不在trn_hst_id中,则为count列的值。 这应该工作(尽管未经测试):

function service_status {
    val=$(cat ~/valor.txt | grep $1 | gawk '{print $1}' FS="|" | sed "s/ //g")
        #     ^^ so you don't need to "cd" each time
        # Save the value into "$val"
    echo -n "${val:-0}"     # If there is nothing in $val, print a 0
}

如果$val包含文本,则"${val:-0}"序列扩展为"$val" ,否则扩展为文字0 如果$1不在valor.txt ,则$val将为空,因此您将得到零。 有关更多:-和朋友如何工作的信息,请参见Wiki

“ 0”是echo -n 0的结果,如果awk命令正常工作(通常是这种情况),则在函数内部执行该命令。 从代码尚不清楚为什么要这样写。 显然应该从文件中提取某些值,但是'if'条件似乎正在检查错误的东西,我敢打赌'sed'的返回码不是我们想要的。 (更好的候选者将是'grep'的返回码。

所以我会这样写函数:

function service_status {
    cd
    var=$(cat valor.txt | grep $1 | gawk '{print $1}' FS="|" | sed "s/ //g")
    if [ -z "$var" ]; then
        echo -n 0
    else
        echo -n "$var"
    fi
}

变量“ var”将包含“搜索命令”的结果。 如果搜索不返回任何值,则'var'将为空,并且'0'将是函数的输出,否则'var'的内容将位于输出中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM