(( )) - 为整数设计
除了 [[]] 复合命令, 打坏 还提供了 (()) 复合命令,用于对整数进行运算。 它支持一整套算术评估,我们将在第 34 章中全面介绍这个主题。
(()) 用于执行 算术真题测试. 如果算术评估的结果非零,则算术真值测试结果为真。
[我@linuxbox ~]$ 如果((1)); 然后 echo "这是真的。"; 菲
是真的。
[我@linuxbox ~]$ 如果((0)); 然后 echo "这是真的。"; 菲
[我@linuxbox ~]$
[我@linuxbox ~]$ 如果((1)); 然后 echo "这是真的。"; 菲
是真的。
[我@linuxbox ~]$ 如果((0)); 然后 echo "这是真的。"; 菲
[我@linuxbox ~]$
运用 (()),我们可以稍微简化一下 测试整数2 像这样的脚本:
#!/斌/庆典
# test-integer2a:评估一个整数的值。
智力=-5
如果 [[ "$INT" =~ ^-?[0-9]+$ ]]; 那么如果 ((INT==0)); 然后
echo "INT 为零。"
其他
if ((INT < 0)); 然后
echo "INT 是否定的。"
其他
echo "INT 为正。"
fi
if ((((INT % 2)) == 0)); 然后
echo "INT 是偶数。"
其他
echo "INT 很奇怪。"
fi
#!/斌/庆典
# test-integer2a:评估一个整数的值。
智力=-5
如果 [[ "$INT" =~ ^-?[0-9]+$ ]]; 那么如果 ((INT==0)); 然后
echo "INT 为零。"
其他
if ((INT < 0)); 然后
echo "INT 是否定的。"
其他
echo "INT 为正。"
fi
if ((((INT % 2)) == 0)); 然后
echo "INT 是偶数。"
其他
echo "INT 很奇怪。"
fi
echo "INT 不是整数。" >&2 退出1
fi
echo "INT 不是整数。" >&2 退出1
fi
请注意,我们使用小于号和大于号,并且 == 用于测试等效性。 这是处理整数的更自然的语法。 还要注意,因为复合命令 (()) 是 shell 语法的一部分而不是普通命令,它只处理整数,它能够通过名称识别变量,不需要执行扩展。 我们将讨论 (()) 以及第 34 章中进一步的相关算术展开。