$ help [
[: [ arg... ]
Evaluate conditional expression.
This is a synonym for the "test" builtin, but the last argument must
be a literal `]', to match the opening `['.
$ man test
[...]
INTEGER1 -eq INTEGER2
INTEGER1 is equal to INTEGER2
INTEGER1 -ge INTEGER2
INTEGER1 is greater than or equal to INTEGER2
[...]
所以看起来你可以写(不要忘记空格——[它只是一个内置程序,所以保持它的参数分开)
if [ "$var" -eq 0 ]; then
echo "Zero"
elif [ "$var" -gt 0 ]; then
echo "Positive"
fi
请注意,如果$var不是整数,这将导致错误。我们假设$var已经是某个整数。
如果你不确定那$var是一个整数,我不知道一个很好的测试,所以这里有一些使用正则表达式的代码:
if [[ "$var" =~ ^[1-9][0-9]+$ ]]; then
echo "Positive"
elif [[ "$var" = 0 ]]; then
echo "Zero"
else
echo "Other"
fi
zero_or_positive_integer(){
for i in "$@"; do
if [[ "$i" =~ ^[0-9]+$ ]]; then
echo "YES $i is either 0 or a positive integer"
else
echo "NO $i is neither 0 nor a positive integer"
fi
done
}
结果是:
$ zero_or_positive_integer foo -2 1.5 0 12
NO foo is neither 0 nor a positive integer
NO -2 is neither 0 nor a positive integer
NO 1.5 is neither 0 nor a positive integer
YES 0 is either 0 or a positive integer
YES 12 is either 0 or a positive integer
要进行测试,您通常使用
[
or[[
运算符。[
是命令的同义词test
(不是 Bash 的一部分)所以看起来你可以写(不要忘记空格——
[
它只是一个内置程序,所以保持它的参数分开)请注意,如果
$var
不是整数,这将导致错误。我们假设$var
已经是某个整数。如果你不确定那
$var
是一个整数,我不知道一个很好的测试,所以这里有一些使用正则表达式的代码:常见的做法是检查变量的值是否仅由数字组成。使用较新的 bash shell,您可以使用
=~
正则表达式:结果是:
printf
Bash 内置将读取一个字符串并验证它是否可以按照格式字符串的指定成功转换。您可以检查状态“${?}”,用于-v
将值放入临时变量,并使用 丢弃错误消息2>/dev/null
。