【发布时间】:2025-12-08 17:45:01
【问题描述】:
我不知道为什么我在运行我的脚本时会得到一个额外的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>
【问题讨论】:
-
array中的值是什么?valor.txt里面有什么?据推测,您的管道正在产生价值,那么您正在做echo -n 0。 -
我认为是
cat valor.txt | grep $1 | gawk '{print $1}' FS="|" | sed "s/ //g"的输出。不知道为什么你有那个命令序列,然后还有基于$?的echo语句。 -
@TomFenech 抱歉,现在已经更新了
-
@cxw 是的,我得到了正确的输出,我试图将 trn_hst_id 的计数放在值 TAG 上,但是当值 0 时,我总是在正确结果后得到 0 值
-
谢谢 - 我认为my answer 会起作用。实际上,您总是得到一个 0 -
<value>0</value>for60来自if语句。 :)
标签: linux bash shell if-statement grep