bash - Shell 是可变数字

标签 bash shell case wildcard

晚上好, 我想编写一个脚本来说明它的参数是否是数字,但是我得到了这个:

a: 4: Syntax error: "(" unexpected (expecting ")")

一开始我尝试这样:

    #!/bin/bash
    case "$1" in
        0x* ) echo hex ;;
        ''|*[!0-9]*) echo dec ;;
        * ) echo wtf ;;
    esac

后来我发现了这一点:

    if ! [[ "$yournumber" =~ ^[0-9]+$ ]] ; then
       exec >&2; echo "error: Not a number"; exit 1
    fi

好吧,这些都不起作用,我寻求帮助!

最佳答案

我不确定 *[!0-9]* 是什么意思,但以下内容似乎对我有用。

#!/bin/bash

shopt -s extglob

case "$1" in
    '')
        echo missing ;;
    0x+([0-9a-fA-F]))
        echo hex ;;
    +([0-9]))
        echo dec ;;
    *)
        echo wtf ;;
esac

请注意,extglob 让我可以使用更复杂的模式匹配来查找“十六进制”和“十进制”数字。您可以在 bash man page 中找到相关信息。 .

关于bash - Shell 是可变数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13273621/

相关文章:

python - 非默认 shell 命令的子进程

sql - 选择 ColA=ColB 的行,并添加一个新列,告知 ColA 中的原始数据是否重复

case - 在 SPSS 中使用宏选择个案

linux - 如何在 Linux 上使用不同的工作表创建 CSV 文件

regex - 如何使用 bash 脚本验证电子邮件 ID?

json - JQ if then 语句范围

linux - shell脚本中的新行

bash -/usr/bin/重命名 : Argument list too long (mass renaming files)

java - 每次循环运行不同的方法

bash - 如何查找字符串中是否缺少一系列非 float