gpt4 book ai didi

bash - 将 bash 函数的返回值评估为整数

转载 作者:行者123 更新时间:2023-11-29 09:28:08 25 4
gpt4 key购买 nike

我一直在尝试编写一个 bash 函数来检查变量是否为整数。下面脚本中的 is_number 函数执行此检查。

当我运行它时(测试值为 1234),我收到以下错误消息:

./test_n2.sh: line 13: [: Checking 1234
1234: integer expression expected
n is not an integrer

我很困惑:该函数返回 $?,在我使用 grep 进行的一个线性测试中,它被正确设置为 0 的整数值。主 block 中的整数比较作为 [ "$retval"-eq 0 ] 完成,AFAIK 是测试整数的正确形式。

有人可以帮忙吗?

TIA.

#!/usr/bin/env bash

function is_number {
number=$1
echo "Checking $number"
echo $number | /bin/egrep '^[0-9]+$'
return $?
}

n=1234
retval=`is_number $n`

if [ "$retval" -eq 0 ]; then
echo n is an integer
exit 0
fi

echo n is not an integrer
exit 1

最佳答案

当您使用反引号或 $(...) 分配变量时,它会获得命令的标准输出。命令的返回值放在变量 $? 中。所以你应该这样做:

is_number $n
retval=$?

或者你可以简单地写:

if is_number $n; then
echo n is an integer
exit 0
fi

关于bash - 将 bash 函数的返回值评估为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24209854/

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