gpt4 book ai didi

string - 读取字符串并转换为 INT (BASH)

转载 作者:行者123 更新时间:2023-12-02 15:19:24 26 4
gpt4 key购买 nike

我在 Bash 中有一个简单的脚本来读取文件中的数字,然后将其与不同的阈值进行比较。输出是这样的:

: integer expression expected
: integer expression expected
OK: 3

我的代码是这样的:

#!/bin/bash

wget=$(wget http://10.228.28.8/ -O /tmp/wget.txt 2>/dev/null)
output=$(cat /tmp/wget.txt | awk 'NR==6')
#output=7
echo $output

if [ $output -ge 11 ];then
echo "CRITICAL: $output"
exit 2
elif [ $output -ge 6 ] && [ $output -lt 11 ];then
echo "WARNING: $output"
exit 1
else
echo "OK: $output"
exit 0
fi

rm /tmp/wget.txt

我知道问题出在哪里,我知道我正在读取一个字符串并尝试比较一个 int。但我不知道我该怎么做才能读取这个文件并将数字转换为在 int var 中读取..

有什么想法吗?

最佳答案

$output为空字符串时出现问题;无论你是否引用扩展(你应该),你都会得到 integer expression required 错误。您需要显式处理空字符串,默认值为零(或任何有意义的默认值)。

wget=$(wget http://10.228.28.8/ -O /tmp/wget.txt 2>/dev/null)
output=$(awk 'NR==6' < /tmp/get.txt)
output=${output:-0}

if [ "$output" -ge 11 ];then
echo "CRITICAL: $output"
exit 2
elif [ "$output" -ge 6 ];then
echo "WARNING: $output"
exit 1
else
echo "OK: $output"
exit 0
fi

(如果你到达elif,你已经知道$output的值小于11;不需要再检查。)


如果 output 以回车结束,也会出现该问题,与错误信息一致。你可以删除它

output=${output%$'\r'}

关于string - 读取字符串并转换为 INT (BASH),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38395450/

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