Bash 如果变量是整数

thi*_*uy 5 variables bash integer if-statement

我正在尝试在 bash 中编写一个 if 语句,如果提供的变量不是整数,该语句将退出。我最终会将这个 if 语句嵌套在 while 循环中。

当我运行此命令时,我收到语法错误。

#!/bin/bash
if [ $f1 != ^[0-9]+$ ]
    then 
        exit 1 
    fi 
Run Code Online (Sandbox Code Playgroud)

fed*_*qui 2

你最好像这样否定这个条件:

if [[ ! "$f1" =~ ^[0-9]+$ ]]; then 
  exit 1
fi
Run Code Online (Sandbox Code Playgroud)

请注意正则表达式的[[and]]语法,以及!对它取反的语法。然后,我们使用=~正则表达式。

测试

$ r=23a
$ [[ ! "$r" =~ ^[0-9]+$ ]] && echo "no digit" || echo "digit"
no digit
$ r=23
$ [[ ! "$r" =~ ^[0-9]+$ ]] && echo "no digit" || echo "digit"
digit
Run Code Online (Sandbox Code Playgroud)

  • 如果你想要负整数,只需添加一个 -?(可选的“-”)到正则表达式的开头,如下所示:[[ ! "$f1" =~ ^-?[0-9]+$ ]] (2认同)