文件通配和仅匹配数字

hau*_*d85 3 bash design-patterns glob

在bash脚本中,我需要验证用户输入的实际数字,所以我认为最简单的方法是让自己确定这是实现一个case:

case $1 in
    [0-9]*)
    echo "It's ok"
    ;;
    *)
    echo "Ain't good!"
    exit 1
    ;;
esac 
Run Code Online (Sandbox Code Playgroud)

但我很难用文件通配,因为我找不到一种方法来要求$ 1值必须只是数字.或者另一种方式可以排除所有替代方案:

case $1 in
    -*)
    echo "Can't be negative"
    exit 1
    ;;
    +*)
    echo "Must be unsigned"
    exit 1
    ;;
    *[a-zA-z]*)
    echo "Can't contain letters"
    exit 1
    ;;
esac
Run Code Online (Sandbox Code Playgroud)

事情是在这种情况下,我应该能够阻止"特殊"字符!?^ =()等等......我不知道如何实现它.请有人给我一个提示吗?

gle*_*man 6

如果您在字符串中的任何位置找到非数字字符,则输入是错误的,否则是好的:

case "$1" in
  *[^0-9]*) echo "first parameter must contain numbers only"; exit 1;;
esac
Run Code Online (Sandbox Code Playgroud)