gpt4 book ai didi

linux - 为什么我的脚本上多了一个 0

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:09 24 4
gpt4 key购买 nike

我不知道为什么我在运行脚本时会得到一个额外的 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>

最佳答案

如果我对您的评论理解正确,您想要打印计数。这是 count 列的值,如果 valor.txt 中存在,或者如果 array 中的 trn_hst_id 为 0 > 不在 valor.txt 中。这应该有效(虽然没有测试):

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:-0}" 序列扩展为 "$val",如果 $val 中有文本,或者作为文字 0 否则。如果 $1 不在 valor.txt 中,则 $val 将为空,因此您将得到一个零。参见 the wiki有关 :- 和 friend 如何工作的更多信息。

关于linux - 为什么我的脚本上多了一个 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42399078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com