📜  bash if is number - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:29:34.642000             🧑  作者: Mango

Bash中判断是否为数字

在Bash脚本中,我们经常需要判断一个变量是否为数字,这时我们可以使用某些技巧来检测它。

方法一

使用正则表达式检测输入是否为数字。以下代码段中,我们使用if语句结合=~运算符和正则表达式来检测输入是否为数字。

#!/bin/bash

read -p "Enter a number: " num

if [[ $num =~ ^[0-9]+$ ]]; then
  echo "Input is a number."
else
  echo "Input is not a number."
fi

代码解释:

  • read语句提示用户输入一个数字;
  • if语句检测输入的字符串是否完全由数字组成;
  • ^和$符号为正则表达式中的锚点,表示开头和结尾;
  • [0-9]+表示数字出现一次或多次。
方法二

使用bc命令判断输入是否为数字。bc是一个数学库,可以完成很多数学计算。

#!/bin/bash

read -p "Enter a number: " num

if [ -z "$(echo $num | bc 2>/dev/null)" ]; then
  echo "Input is not a number."
else
  echo "Input is a number."
fi

代码解释:

  • read语句提示用户输入一个数字;
  • echo命令将输入的数字传递给bc命令;
  • bc命令返回空字符串代表输入为数字;
  • -z选项检测字符串是否为空。
方法三

使用expr命令判断输入是否为数字。expr可以完成算术运算和字符串操作。

#!/bin/bash

read -p "Enter a number: " num

if [ $(expr $num + 1 2>/dev/null) ]; then
  echo "Input is a number."
else
  echo "Input is not a number."
fi

代码解释:

  • read语句提示用户输入一个数字;
  • expr命令尝试将输入的数字与1相加;
  • 如果结果为数字,则代表输入为数字;
  • 2>/dev/null选项隐藏错误消息。

总结:以上三种方法都可以实现判断输入是否为数字的功能,具体使用哪种方法取决于个人喜好。